想编个C语言程序求解两个非负整数的最大公约数,程序如下,运行结果一直不对,新手望高手指点!

// u和v为要输入的两个非负整数。

#include <math.h>
#include <stdio.h>
int main (void)
{

int q, u, v, x, y;
printf("Please type in two nonnegative integers.\n");
scanf("%i%i", &u, &v);
q=(int)sqrt(u*v);
x=u%q;
y=v%q;
while(x=y=0)
{
x=x%(q-1);
y=y%(q-1);
--q;
}
q=q-1;
printf("Their greatest common divisor is %i\n", q);
return 0;

}

while(x=y=0)
{
x=x%(q-1);
y=y%(q-1);
--q;
}
q=q-1;
改成
while(x!=0&&y!=0)
{
--q;
x=x%(q);
y=y%(q);
}
q=q-1;
x=y=0在c语言中这相当于把 x ,y 赋值成0. == 还是判断等于。=是赋值追问

还是算不出正确结果, 应该是程序本身逻辑不对,谢谢啊

温馨提示:答案为网友推荐,仅供参考

相关了解……

你可能感兴趣的内容

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 非常风气网