题目:输入两个正整数m和n,求其最大公约数和最小公倍数。
说明:
最大公约数:两个数中小的数给大的数求余,且余数必小于除数,同理除数变为大的数,余数变为除数求余。
最小公约数:两个数分解都有最大公约数,将两数相乘除以最大公约数得最小公约数
#include<stdio.h>
int main()
{
int n,m,temp,p,r;
scanf("%d%d",&n,&m);
if(n<m) //排序
{
temp=n;
n=m;
m=temp;
}
p=n*m;
while(m!=0)
{
r=n%m;
n=m;
m=r;
}
printf("最大公约数:%d\n",n);
printf("最小公被数:%d\n",p/n);
return 0;
}
函数版
#include<stdio.h>
int main()
{
int gys(int a,int b);
int gbs(int,int,int);
void sort(int array[],int i);
int a,b,h;
scanf("%d%d",&a,&b);
h=gys(a,b);
printf("%d\n",h);
printf("%d\n",gbs(a,b,h));
return 0;
}
int gys(int a,int b)
{
int max,r;
if(b>a)
{
max=b;b=a;a=max;
}
while((r=a%b)!=0)
{
a=b;
b=r;
}
return b;
}
int gbs(int a,int b,int r)
{
return a*b/r;
}