1203081549 发表于 2023-3-2 18:50:09

输出最大公约数与最小公倍数

void main()
   {
         int i,m,n,t;
         scanf("%d%d",m,n);
         if(m<n)
         {
             t=n;
             n=m;
             m=t;
         }
         for(i=n;i>=1;i--)
         {
             if(m%i==0&&n%i==0)
             {
             printf("最大公约数是%d",i);
             break;
             }
             }
         
      for(i=m;i<=m*n;i++)
         {
             if(i%m==0&&i%n==0)
             {
             printf("最小公倍数为%d",i);
             break;
         }
   }
   }
我这个程序输出不了值,求大佬看看错误在哪

jhq999 发表于 2023-3-2 18:58:34

本帖最后由 jhq999 于 2023-3-2 19:06 编辑

scanf("%d%d",&m,&n);
printf("最小公倍数为%d",m*n/i);

幸甚至哉 发表于 2023-3-2 22:13:54

你的程序有一个问题,就是在使用scanf函数时,没有加上取地址符&。这样会导致输入的值无法正确赋给变量m和n。正确的写法应该是:

scanf("%d%d",&m,&n);
另外,你的程序没有考虑到m和n可能为0或负数的情况,这样会导致除以0或无限循环的错误。建议你在输入前加上一些判断和提示语句,比如:

printf("请输入两个正整数:\n");
scanf("%d%d",&m,&n);
if(m<=0||n<=0)
{
    printf("输入错误,请重新输入!\n");
    return;
}
希望这些对你有帮助。
页: [1]
查看完整版本: 输出最大公约数与最小公倍数