|
|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
运行不报错,但输入数字后按回车没反应
#include<stdio.h>
int main()
{
int a = 1, m = 0, n = 0, i = 2;
scanf_s("%d%d", &m, &n);
for (i = 2; i <= m && i <= n; i++)
{
while (m % i == 0 && n % i == 0)
{
a = a * i;
}
}
printf("最大公因数为%d\n", a);
return 0;
}
问题出在while循环中的逻辑错误。在循环中,应该将m和n分别除以i,而不仅仅是判断是否能整除。此外,还需要将a除以i,以便计算最大公因数。
以下是修正后的代码:
- #include<stdio.h>
- int main()
- {
- int a = 1, m = 0, n = 0, i = 2;
- scanf("%d%d", &m, &n);
- for (i = 2; i <= m && i <= n; i++)
- {
- while (m % i == 0 && n % i == 0)
- {
- a = a * i;
- m = m / i;
- n = n / i;
- }
- }
- printf("最大公因数为%d\n", a);
- return 0;
- }
复制代码
修正后的代码将m和n分别除以i,并更新a的值。这样,当循环结束时,a的值就是最大公因数。
|
|