عاملة الأرقام الأولية في لغة البرمجة C
لحل مشكلتك بشكل أكثر عمومية، يمكنك تعديل الدالة factor
لتتعامل بشكل أفضل مع العوامل الأولية. إليك الكود المعدل:
c#include
#include
#include
void prime(int num);
void factor(int num);
int main()
{
int num;
printf("Enter your number: ");
scanf("%d", &num);
prime(num);
return 0;
}
void prime(int num)
{
int sq, i;
sq = abs(sqrt(num));
if (num == 2)
printf("\n%d is a prime number", num);
else
{
for (i = 2; i <= sq; i++)
{
if (num % i == 0)
{
printf("\n%d is not a prime number\n", num);
factor(num);
return;
}
}
printf("\n%d is a prime number", num);
}
}
void factor(int num)
{
int i;
for (i = 2; i <= num; i++)
{
again:
if (num % i == 0)
{
num = num / i;
printf("%d ", i);
goto again;
}
}
}
في هذا التعديل، تم تحسين الدالة factor
للتعامل مع العوامل الأولية بشكل عام. ستتوقف عندما يكون num
يساوي 1، وهذا يعني أن جميع العوامل الأولية قد تم استخدامها.
-
تأمين نظام الدخول لقاعدة البيانات07/03/2024
المزيد من المعلومات
بالتأكيد! في البرنامج المعدل، تم تحسين الدالة factor
لتتعامل بشكل أفضل مع العوامل الأولية. عندما تجد عاملاً أوليًا، تطبعه وتقوم بتقسيم num
عليه. ثم تستخدم goto
للعودة إلى الجزء العلوي من الحلقة لمتابعة البحث عن العوامل الأولية الأخرى ل num
المحدث.
عندما تبدأ الدالة، تبدأ من 2 وتبحث عن العوامل الأولية ل num
، وهي الأعداد التي لا يمكن قسمها على أي عدد سوى نفسها والواحد. إذا وجدت عاملاً أوليًا، تقوم بطباعته وتقسم num
عليه، ثم تعيد الدالة لتبحث عن العوامل الأولية الأخرى لل num
المحدث. تتوقف العملية عندما يكون num
يساوي 1، مما يعني أن جميع العوامل الأولية قد تم استخدامها.
بهذه الطريقة، يتم الآن تحسين الأداء والفعالية للبرنامج لأنه يبحث عن العوامل الأولية الخاصة بالعدد المُدخل بشكل أكثر عمومية وليس فقط بعض الأعداد الأولية المُحددة بشكل صلب.