求最大公约数和最小公倍数:
输入两个数,求这两个数的最大公约数和最小公倍数
代码(C语音):
#include <stdio.h>
int main()
{
int a,b,r,sa,sb;
printf("请输入两个数:\n");
scanf("%d%d",&a,&b);
sa=a;sb=b;
if(a<b) //让a,b交换,要使a大于b
{
r=a;
a=b;
b=r;
}
r=a%b;
while(r!=0)
{
a=b;
b=r;
r=a%b;
}
printf("这两个数的最大公约数为:%d\n这两个数的最小公倍数为:%d\n",b,sa*sb/b);
return 0;
}
代码2(用辗转相除法求两个数的最大公约数):
#include <stdio.h>
int gcd(int a,int b)
{
int t;
int r;
if(a<b)
{
t=a;
a=b;
b=t;
}
r=a%b;
while(r!=0)
{
a=b;
b=r;
r=a%b;
}
return b;
}
int main()
{
int x,y;
int fac;
printf("请输入两个数:\n");
scanf("%d %d",&x,&y);
fac=gcd(x,y);
printf("这两个数的最大公约数为:\n");
printf("%d\n",fac);
}
代码3(简化后的代码):
#include <stdio.h>
int gcd(int n, int m) //gcd函数是一个求最大公约数的函数
{
return n % m == 0 ? m : gcd(m, n%m);
}
int main()
{
int a,b,r,sa,sb,d;
printf("请输入两个数:\n");
scanf("%d%d",&a,&b);
d=gcd(a,b);
printf("这两个数的最大公约数为:%d\n这两个数的最小公倍数为:%d\n",d,a*b/d);
return 0;
}