西南科技大学Power OJ:实验-实验四 循环控制程序设计 D: 实验四-5 输入两个正整数m和n,求其最大公约数a和最小公倍数b。

描述:

输入两个正整数m和n,求其最大公约数a和最小公倍数b。
输入
输入两个正整数m和n。(1≤n,m≤231−1,但是不保证n×m≤231−1),注意整型数据的范围。请仔细思考如何处理。
输出
输出最大公约数a和最小公倍数b,用空格隔开。
保证结果1≤a,b≤231−1
样例:
1000000000 2000000000
12 15

1000000000 2000000000
3 60
提示
注意,有两种解法都可解此题。
介绍其中一种,辗转除法:在m>n条件下,令a=m,b=n,且b!=0条件下,反复求a与b的余数。

#include <stdio.h>
#include <math.h> 
int main ()
{
    
    
	int m,n;
	scanf("%d %d",&m,&n);
	int i;
	int a,b = 1;
	for(i=1; i<=m||i<=n; i++)
	{
    
    
		if(m%i==0 && n%i==0)
		{
    
    
			a=i;        //每次更新公因数,最后循环结束的时候即为最大公因数 
		}
	}
	b = (m/a)*(n/a)*a;  //求最大公约数 
	printf("%d %d",a,b);
	return 0;
} 

猜你喜欢

转载自blog.csdn.net/qq_45281807/article/details/111085608