最大公约数
#include<stdio.h>
int gcd(int,int);
int main()
{
int m,n;
scanf("%d %d",&m,&n);
printf("%d\n",gcd(m,n));
return 0;
}
int gcd(int m,int n)
{
int c;
while(n)
{
c=m%n;
m=n;
n=c;
}
return m;
}
设计辗转相除法函数求解
#include<stdio.h>
int gcd(int,int);
int main()
{
int m,n;
scanf("%d %d",&m,&n);
printf("%d\n",gcd(m,n));
return 0;
}
int gcd(int m,int n)
{
int t,l;
if(n==0)l=m;
else l=gcd(n,m%n);
return l;
}
设计递归函数求解最大公约数
最小公倍数
#include<stdio.h>
int gcd(int m,int n);
int main()
{
int p,n,m,t;
scanf("%d %d",&m,&n);
if(n<m)
{
t=n;
n=m;
m=t;
}
p=m*n;
n=gcd(m,n);
printf("%d\n",p/n);
return 0;
}
int gcd(int m,int n)
{
int r;
while(m!=0)
{
r=n%m;
n=m;
m=r;
}
return n;
}
这是一种特殊的方法,不太理解,但是和辗转相除法有点类似
#include<stdio.h>
int gcd(int n,int m);
int main()
{
int m,n,g,y;
scanf("%d %d",&m,&n);
g=gcd(n,m);
y=m*n/g;
printf("%d",y);
return 0;
}
int gcd(int n,int m)
{
if(m>n) gcd(m,n);
else
{
if(n%m==0) return m;
else return gcd(m,n%m);
}
}
你细品这个做法,有点奇葩