对于c中的学生课程, 我需要找到两个整数的主要最大公约数(gcd)。 如果没有答案,输出应该是1. 只能使用if语句,scanf,循环(无外部函数)。输入和输出查找两个数字之间的素数gcd
例子:
(20,20)--->5
(21,20)--->1
(22,20)--->2
(29,29)--->29
是否有人可以帮助我? 这是我到目前为止有:
#include <stdio.h>
int main()
{
int num1, num2, i, hcf;
printf("Enter two integers: ");
scanf("%d %d", &num1, &num2);
for(i=1; i<=num1 || i<=num2; ++i)
{
if(num1%i==0 && num2%i==0) /* Checking whether i is a factor of both number */
hcf=i;
}
printf("gcd of %d and %d is %d", num1, num2, hcf);
return 0;
}
有关于如何发现我已经找到了黄金GCD的GCD,但没有很多的例子。
你可以明显地测试所有类似于筛选算法的素数。虽然这不会很有效。另一种选择(有点类似)是找到一个数字的因素,并检查是否分开另一个(抓住它们的最大值)。 –