【发布时间】:2025-11-25 11:40:01
【问题描述】:
对于 c 中的学生课程, 我需要找到两个整数的最大公约数(gcd)。 如果没有答案,则输出应为 1。 只能使用 if 语句、scanf、循环(不能使用外部函数)。
输入和输出示例:
(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 的示例。
【问题讨论】:
-
您显然可以像筛算法一样测试所有素数。不过效率不会很高。另一种选择(有点相似)是找到一个数字的因数并检查是否除以另一个(抓住它们中的最大值)。