[C]球球大佬帮我看看我这个为什么对了
题目是求两个整数的最大公约数我想不明白的地方是那两个while,因为while不是括号里是真的话就会一直循环吗,而我这样写它从一开始就是真,然后到同时满足||前后两个条件一直是真,所以这个“k”在变成正确值之后应该继续-1,但是为什么却能输出正确的答案呢?
#include<stdio.h>
int main (void)
{
int i, j, k;
scanf("%d %d",&i, &j);
if(i < j)
{k = i;
while (j % k != 0 || i % k != 0)
{
k--;
}
printf("%d", k);
}
else
{
k = j;
while (i % k != 0 || j % k != 0)
{
k--;
}
printf("%d", k);
}
return 0;
}
|| 是 或
满足一个就为真左边为真则跳过右边
页:
[1]