yuyangtian1000 发表于 2008-8-9 21:03

求最小公倍数的算法错在哪里?

#include "stdio.h"
void main()
{
      int max(int x,int y);
      int a,b,c;
      scanf("%d,%d\n",&a,&b);
      c=max(a,b);
      printf("%d\n",c);
      getch();
}
int max(int x,int y)   /*求最小公倍数*/
{
        int i;
         for(i=2;i>=2;i++)
         {
             if(x*i==y*i)
              {
                return(i);
               }
           }

}

qinxinhai 发表于 2008-8-9 21:19

if(x*i==y*i)
你想会相等吗?
...........
你找个求最大公约数的进经典算法
然后俩个数相乘除以最大公约数就是最小公倍数

evanstacy 发表于 2008-8-9 21:55

你的程序设计思想好像不对哦.

,以下是我之前做的求最大公约数和最小公倍数的程序,在VC6.0下通过...


#include<stdio.h>
void main()
{
        int m(int x,int y);
        int n(int x,int y);
    int a,b,c,d;
        printf("请输入两个数:\n");
        scanf("%d,%d",&a,&b);
        c=m(a,b);
        d=n(a,b);
        printf("%d和%d的最大公约数是:%d\n",a,b,c);
        printf("%d和%d的最小公倍数是:%d\n",a,b,d);

}

int k;
int m(int x,int y)
{
        int i,temp;
        if(x>y)
        {
                temp=x;
                x=y;
                y=temp;
        }
        for(i=x;i>=1;i--)
                if(x%i==0&&y%i==0)
                {k=i;
                break;
                }
     return k;
}


int n(int x,int y)
{
  extern k;
  int a,b,z;
  a=x/k;
  b=y/k;
  z=a*b*k;
  return z;
}

evanstacy 发表于 2008-8-9 21:57

for(i=2;i>=2;i++)
这个是死循环,不会结束的

页: [1]

编程论坛