Description
輸入兩個正整數m和n,輸出m、n的最大公約數和最大公倍數。先計算最大公約數,m和n得乘積除以最大公約數,就得到了最小公倍數。其中最大公約數可以用窮舉法求得,也可以用輾轉相除法求得。
Input
兩個正整數m和n,空格隔開
Output
m、n的最大公約數和最小公倍數。
提示:一般地說,求最小公倍數用兩個數的積除以最大公約數即可,而求最大公約數有多種算法:
\1. 窮舉法1,從1開始直到較小的數,每個數進行判斷,如果是公約數就保留此數到變量max中,最後留下的就是最大公約數
2.窮舉法2,從較小數由大到小列舉,直到找到公約數立即中斷列舉,得到的公約數便是最大公約數。
3.輾轉相除法,又名歐幾里德算法,是計算最大公約數和最小公倍數的重要方法,比窮舉法簡便得多。
主要過程是設兩數爲a,b,
1)a除以b得餘數àc;
2)如果c不等於0則:
bàa,càb,回到1);
Sample Input
12 48
20 12
Sample Output
12 48
4 60
輾轉相除求最大公約數和最小公倍數
#include<iostream>
int main()
{
int m,n,sum,r;
while(std::cin>>m>>n){
r=1;sum=m*n;
while(r!=0)
{r=m%n;m=n;n=r;}
std::cout<<m<<" "<<sum/m<<std::endl;
}
return 0;
}