演算法基礎訓練題(一)
阿新 • • 發佈:2019-02-07
1.公約數 和 公倍數 (10分)
C時間限制:1 毫秒 | C記憶體限制:1 Kb
題目內容:
輸出描述
輸入樣例
輸出樣例
題目內容:
歐幾里得演算法求最大公約數 歐幾里得演算法求最大公約數 歐幾里得演算法求最大公約數 重要的事情說三遍... 必須使用這個演算法 歐幾里德演算法又稱輾轉相除法,用於計算兩個正整數a,b的最大公約數。輸入描述
The input will consist of a series of pairs of integers a and b, separated by a space, one pair of integers per line. 每一行輸入兩個整數a和b。 Process to end of file. 支援處理檔案尾
輸出描述
For each pair of input integers a and b you should output the gcd(a,b) and lcm(a,b) in one line, and with one line of output for each line in input. 對於每組輸入,要求輸出 最大公約數 和 最小公倍數 在同一行,用空格隔開。
輸入樣例
3 5
輸出樣例
1 15
程式程式碼
#include<iostream>
#include<cstdio>
using namespace std;
int main(){
int a,b;
while(cin>>a>>b){
int m=a*b;
if(a<b){
int temp=a;
a=b;
b=temp;
}
int temp;//輾轉相除法,用大數對小數求餘,再比較小數和餘,用較大的除較小的,直到餘==0,輸出最後較小數即為最大公約數,這為輾轉相除法,最小公倍數==兩數之積除以最大公約數
while(b!=0){
if(a<b){
temp=a;
a=b;
b=temp;
}
temp=a%b;
a=b;
b=temp;
}
cout<<a<<" "<<m/a<<endl;
}
return 0;
}