下面的程序是求最大公约数,{int r;do{r=a%b;a=b;b=r;} while(r!=0);ruturn a;如果a=21,b=15时,a%b不是为9吗?a=b,b=15,最后输出的a不是为15吗?还是3?
来源:学生作业帮助网 编辑:作业帮 时间:2024/08/16 06:08:17
![下面的程序是求最大公约数,{int r;do{r=a%b;a=b;b=r;} while(r!=0);ruturn a;如果a=21,b=15时,a%b不是为9吗?a=b,b=15,最后输出的a不是为15吗?还是3?](/uploads/image/z/14507802-18-2.jpg?t=%E4%B8%8B%E9%9D%A2%E7%9A%84%E7%A8%8B%E5%BA%8F%E6%98%AF%E6%B1%82%E6%9C%80%E5%A4%A7%E5%85%AC%E7%BA%A6%E6%95%B0%2C%7Bint+r%3Bdo%7Br%3Da%25b%3Ba%3Db%3Bb%3Dr%3B%7D+while%28r%21%3D0%29%3Bruturn+a%3B%E5%A6%82%E6%9E%9Ca%3D21%2Cb%3D15%E6%97%B6%2Ca%25b%E4%B8%8D%E6%98%AF%E4%B8%BA9%E5%90%97%3Fa%3Db%2Cb%3D15%2C%E6%9C%80%E5%90%8E%E8%BE%93%E5%87%BA%E7%9A%84a%E4%B8%8D%E6%98%AF%E4%B8%BA15%E5%90%97%3F%E8%BF%98%E6%98%AF3%3F)
下面的程序是求最大公约数,{int r;do{r=a%b;a=b;b=r;} while(r!=0);ruturn a;如果a=21,b=15时,a%b不是为9吗?a=b,b=15,最后输出的a不是为15吗?还是3?
下面的程序是求最大公约数,
{int r;
do
{r=a%b;
a=b;
b=r;
} while(r!=0);
ruturn a;
如果a=21,b=15时,a%b不是为9吗?
a=b,b=15,最后输出的a不是为15吗?还是3?
下面的程序是求最大公约数,{int r;do{r=a%b;a=b;b=r;} while(r!=0);ruturn a;如果a=21,b=15时,a%b不是为9吗?a=b,b=15,最后输出的a不是为15吗?还是3?
你要注意整个do while循环的条件是 r != 0,也就是说,当r不等于0的时候,就一直执行循环.那么我们来看看执行过程.
第一次
a = 21,b = 15
r = a % b; // r = 9;
a = b; // a = 15;
b = r; // b = 9;
r不等于0,所以继续
第二次
a = 15,b = 9
r = a % b; // r = 6;
a = b; // a = 9;
b = r; // b = 6;
r不等于0,所以继续
第三次
a = 9,b = 6
r = a % b; // r = 3;
a = b; // a = 6;
b = r; // b = 3;
r不等于0,所以继续
第四次
a = 6,b = 3
r = a % b; // r = 0;
a = b; // a = 3;
b = r; // b = 0;
r等于0了,所以跳出循环
现在a是3,恰好是21和15的最大公约数