C 语言求最小公倍数和最大公约数

2018-02-08  本文已影响17人  863cda997e42

方法一:

#include <stdio.h>  
int main()  
{  
        int data1,data2,i;  
        printf("please input two datas:\n");  
        scanf("%d%d",&data1,&data2);  
        if(data1>data2)// 最小公倍数;  
        {  
                for(i=data1;i<=data1*data2;i++)  
                        if(i % data1==0 && i % data2 ==0)  
                                printf("[ %d %d]最小公倍数是 %d.\n",data1,data2,i);  
        }  
        else  
        {  
                for(i=data2;i<=data1*data2;i++)  
                        if(i % data1==0 && i % data2 ==0)  
                                printf("[ %d %d]最小公倍数是 %d.\n",data1,data2,i);  
        }  
  
        if(data1>data2)//最大公约数;  
        {  
                for(i=data2;i>=1;i--)  
                        if( data1 % i ==0 && data2 % i==0)  
                                printf("[ %d %d]最大公约数是 %d.\n",data1,data2,i);  
        }  
  
        else  
        {  
                for(i=data1;i>=1;i--)  
                        if( data1 % i ==0 && data2 % i==0)  
                                printf("[ %d %d]最大公约数是 %d.\n",data1,data2,i);  
  
        }  
        return 0;  
  
} 

可以让data1始终比data2大。
方法二:

#include <stdio.h>  
int main()  
{  
        int data1,data2,i,data;  
        printf("please input two datas:\n");  
        scanf("%d%d",&data1,&data2);  
        if(data1>data2)// 最小公倍数;  
        {  
                for(i=data1;i<=data1*data2;i++)  
                        if(i % data1==0 && i % data2 ==0)  
                                printf("[ %d %d]最小公倍数是 %d.\n",data1,data2,i);  
        }  
        else  
        {  
                for(i=data2;i<=data1*data2;i++)  
                        if(i % data1==0 && i % data2 ==0)  
                        {  
                                printf("[ %d %d]最小公倍数是 %d.\n",data1,data2,i);  
                                data=i;  
                        }  
        }  
        printf("最大公约数是:%d\n",(data1*data2)/data);  
  
        //此处也可以先求出最大公约数在求最小公倍数,方法一样!  
  
        return 0;  
} 

方法三:

#include <stdio.h>  
int main()  
{  
        int data1,data2,temp,multipy,Max;  
        printf("please input two datas:\n");  
        scanf("%d%d",&data1,&data2);  
        multipy=data1*data2;  
        temp=data1 % data2;  
        while(temp) //表示temp不为零;  
        {  
                data1=data2;  
                data2=temp;  
                temp=data1%data2;  
        }  
        Max=data2;//此处记录一下方便求最小公倍数;  
        printf("最大公约数是:%d\n",data2);  
        printf("最小公倍数是:%d\n",multipy/Max);  
        //再用上面的方法求出最小公倍数即可!!  
    return 0;     
}
上一篇 下一篇

猜你喜欢

热点阅读