题目描述:
输入两个正整数m和n,求其最大公约数和最小公倍数。
输入:
无
输出:
无
样例输入:
2 3
样例输出:
1
6
分析:之前写过,不是很难,相信你也会写(狗头!),话不多说直接上源码;
源码:#include <stdio.h>
int main(void)
{
int m,n,a=1,b=1,c,i;
scanf("%d%d",&m,&n);
if(m>n){ //这一步是为了保证m为两个数中的最小值,方便下面的for循环。
c=m;
m=n;
n=c;
}else{
m=m;
n=n;
}
for(i=1;i<=m;i++){ //这里m为两数中的最小值,你想一下,求最小公倍数,除到最小的那一个就行了。
if(m%i==0&&n%i==0){
a*=i; //如果都能整除,说明i是一个共同的因子,让a的之不断更新,成为最大的公约数。
m=m/i; //注意这里,m和n的值不断更新,至于为什么,好好想想应该能想出来(嘿嘿!)
n=n/i;
}
}
b=a*n*m; //b的值就是最小公倍数,a是最大公约数,此时的m和n都是约分的最小值,三者相乘就是最小公倍数。
printf("%d\n",a);//分别a(最大公约数),b(最大公倍数)输出就行了
printf("%d\n",b);
return 0;
}
最后一次更新于2022-01-21
0 条评论