题目描述:
输入两个正整数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;
}