求最小公倍数最大公约数

 

辗转相除法求

int divisor (int a,int b) 

{  

int  temp; 

if(a<b) 

temp=a;

a=b;

b=temp;

}

while(b!=0) 

temp=a%b; 

a=b; 

b=temp; 

         } 

return (a); 

int multiple (int a,int b) 

int divisor (int a,int b); 

int temp; 

temp=divisor(a,b); 

return  (a*b/temp); 

#include "stdio.h" 

Int main() 

int m,n,t1,t2; 

printf("please input two integer number:"); 

scanf("%d%d",&m,&n); 

t1=divisor(m,n); 

t2=multiple(m,n); 

printf("The higestcommon divisor is %d\n",t1);

printf("The lowest common multiple is %d\n", t2); 

 

递归法求公约数,公倍数

#include <stdio.h>

intGCD(inta, intb)

{

returnb?GCD(b, a%b): a;

}

 

intmain()

{

   inta,b,c;

   scanf("%d%d",&a,&b);

   c=GCD(a,b);

   printf("%d %d",c,a*b/c);

   return0;

}

 

 

 

 

2

、穷举法(利用数学定义)

 

穷举法(也叫枚举法)穷举法求两个正整数的最大公约数的解题步骤:从两个数中较小数开始由大到小列举,直到找到公约数立即中断列举,得到的公约数便是最大公约数。 

①  、定义

1:对两个正整数a,b如果能在区间[a,0]或[b,0]内能找到一个整数temp能同时被a和btemp即为最大公约数。

代码为:

int divisor (int a,int b) 

    int  temp;         

    temp=(a>b)?b:a;    

    while(temp>0)      

    { 

       if (a%temp==0&&b%temp==0) 

          break;     

          temp--;     

    } 

  return (temp);

#include "stdio.h" 

main() 

 int m,n,t1; 

printf("please input two integer number:"); 

 scanf("%d%d",&m,&n); 

 t1=divisor(m,n); 

 printf("The higest common divisor is %d\n",t1); 

 getch(); 

②  、定义

2:对两个正整数a,b,如果若干个a之和或b之和能被b所整除或能被a所整除,则该和数即为所求的最小公倍数。 代码为: 

int multiple (int a,int b) 

int p,q,temp; 

         p=(a>b)?a:b;  

  q=(a>b)?b:a;  

  temp=p;      

  while(1)   

  { 

    if(p%q==0) 

      break;  

    p+=temp;   

  } 

  return  (p); 

#include "stdio.h" 

main() 

 int m,n,t2; 

 printf("please input two integer number:"); 

 scanf("%d%d",&m,&n);  

 t2=multiple(m,n); 

 printf("The least common multiple is %d\n",t2); 

 getch(); 

 

 

最小公倍数为两数的乘积除以最大公约数


你可能感兴趣的:(求最小公倍数最大公约数)