热爱极限运动的码农 2021-10-06 18:21 采纳率: 33.3%
浏览 49
已结题

关于求最大公约数的程序

#include<stdio.h>
int main()
{
int n,m,i,x;
scanf("%d,%d",&m,&n);
if(n>=m)
x=m;
else
x=n;
for(i=x;i>=1;i--)
{
if (m%i==0&&n%i==0)
{
printf("%d",i);
break;
}
}
return 0;
}
这个程序能正常运行 例如我输入81和27 ,得到27 但是少了break之后运行出来的结果变成了两万多 ,我想知道为什么少了break 不能跳出循环之后 数字会变到两万多

  • 写回答

3条回答 默认 最新

  • qzjhjxj 2021-10-06 18:33
    关注

    不加 break;就是输出两个数的所有公约数,不是结果有两万多,是输出时没有空格,所有输出连在一起了27931,其实是 27 9 3 1 ,printf("%d\n",i); 这么改下就看得出来了。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

问题事件

  • 系统已结题 10月14日
  • 已采纳回答 10月6日
  • 创建了问题 10月6日