首页 > 用户发贴区 > 编程问题提问区 > 求最小公倍数的问题
2008
12-22

输入(比较小的)两个整数,求他们的最小公倍数:用的代码如下:
#include<stdio.h>
main()
{ int m,n,min,i,a,b;
  scanf(“%d%d”,&m,&n);
  if(m>n)a=m;
  else a=n;                /*把m,n里的最大值赋给a*/
  min=90000;
  for(i=a;i<=m*n;i++)
  {if(i%m==0 && i%n==0) b=i;/*把所有的公倍数赋给b*/
  if(min>b) min=b;          /*选出公倍数里最小的*/
  }
  printf(“最小公倍数:%d”,min);
}
当输入33 11时,他能正确输出结果,但输6 8时,结果为-858993460
反正有时输的数算出来,有的算不出来,但又不知道那错了,正确的咋弄呀。望大虾指点。
谢谢。。


求最小公倍数的问题》有 3 条评论

  1. linder 说:

    #include<stdio.h>
    main()
    { int m,n,min,i,a,b;
      scanf(“%d%d”,&m,&n);
      if(m>n)a=m;
      else a=n; 
      
      min=90000;
      for(i=a;i<=m*n;i++)
      {if(i%m==0 && i%n==0) b=i;
      else b=m*n;//问题所在,下一贴给你说明
      if(min>b) min=b;      
      }
      printf(“最小公倍数:%d”,min);
    }

  2. linder 说:

    if(i%m==0 && i%n==0) b=i;/*把所有的公倍数赋给b*/
      if(min>b) min=b;    

     

    if(i%m==0 && i%n==0)不成立呢,b就没有赋值呀。假设你输入的是两个成倍数的整数,例如11和33,第一次就选择出来i=33,试验,满足,b就被赋值。

    但6和8的话,i=8,不行,b没有赋值。所以出现了一个很大的数。

    其实,这种情况经常出现,我也是。

    注意就好了。

    好久顶一下。

    学习愉快。

  3. 大奔木瓜 说:

    [QUOTE=linder]

    if(i%m==0 && i%n==0) b=i;/*把所有的公倍数赋给b*/
      if(min>b) min=b;    

     

    if(i%m==0 && i%n==0)不成立呢,b就没有赋值呀。假设你输入的是两个成倍数的整数,例如11和33,第一次就选择出来i=33,试验,满足,b就被赋值。

    但6和8的话,i=8,不行,b没有赋值。所以出现了一个很大的数。

    其实,这种情况经常出现,我也是。

    注意就好了。

    好久顶一下。

    学习愉快。

    [/QUOTE]

留下一个回复