【id:158】【15分】A. 公约数与公倍数(循环)
时间限制1s
内存限制128MB
题目描述
输入两个正整数m和n,求其最大公约数和最小公倍数。
求两个整数最大公约数,请参考教材P159的例子6-2
最小公倍数=m*n / 最大公约数
输入两个整数
输出最大公约数,最小公倍数
输入样例1
5 7
输出样例1
1 35
先上代码
#include <stdio.h>
int main()
{
int m,n,r,M,N;
scanf("%d%d",&m,&n);
M=m;
N=n;
while(n!=0)
{
r=m%n;
m=n;
n=r;
}
printf("%d %d",m,M*N/m);
return 0;
}
这里用的是辗转相除法
辗转相除法又称欧几里得算法,其算法如下:
1.输入两个两个正整数m,n
2.用m除以n,余数为r,如果r等于0则n为最大公因子,算法结束,否则进入3
3.把n赋给m,r赋给n,返回2
最小公倍数=m*n / 最大公约数
由此解题
至于为什么这么做或许我会再出一期关于这个算法的思考(呃又立flag了哈
要分享的大概就这些,如果有更好的方法欢迎交流!
如果有帮到你请点个赞吧!也可以关注我,以后会分享更多,谢谢!
(专栏里面还有更多题哦)
364

被折叠的 条评论
为什么被折叠?



