void main()
{
int a, b, r;
//Finf GCD by Eucledian algorithm
scanf("%d %d", &a, &b);
for( ; b == 0; (a = b), (b = r)){
r = a % b;
printf("GCD is %d", a);
}
printf("GCD is %d", a);
}
不知怎的,这不起作用 我将a和b分配给r,但这似乎不会改变a或b的值。
答案 0 :(得分:1)
这个for(;b==0;(a=b),(b=r))
像这样设置for循环
请注意,如果b从非零开始,循环将永远不会执行 否则,一旦b变为非零,循环将停止执行,而不是使用r的值进行更新。
(这有点汇集了评论的答案,以便将其从未答复的问题列表中删除。对dddJewelsbbb的信用。如果他们回答并要求我,我建议删除它。)< / em>的
答案 1 :(得分:-1)
找到下面更正的工作代码,它会改变循环条件:
#include <stdio.h>
void main ()
{
int a, b, r;
//Finf GCD by Eucledian algorithm
scanf ("%d %d", &a, &b);
for (; r > 0; a = b, b = r)
{
r = a % b;
}
printf ("GCD is %d", a);
}
通过输入进行测试:16,12
16
12
GCD is 4
代码说明: 代码是Euclid算法的直接实现,用于查找GCD。这里除数(数字之一)用于获得余数(在将第二个数除以红利之后)。接下来,余数成为除数,前面的除数成为被除数,这个过程一直持续到余数为零。
代码中有足够的范围使其更优雅并处理极端情况。我尽可能地纠正了完全相同的代码,以发现确切的错误(在for循环条件下)。