題目描述
輸入兩個正整數m和n,求其最大公約數和最小公倍數。
輸入
兩個整數
輸出
最大公約數,最小公倍數
樣例輸入
5 7
樣例輸出
1 35
來源/分類
C語言
示例照片:
設計思路:
本題最難的就是,尋找的算法~(簡單的也叫做算法)
最大公約數:
1,首先最大最大,就只是二者中的最小的一位數啦唄!
所以我們整個先決條件:
if(a>=t)
i=t;
else
i=a;
令i等於其中最小的一個!
進行下面來篩選:
do{
if(a%i==0&&t%i==0)
{
max=i;
break;
}
i--;
}while(i>0);
二者中最小的數,每一次循環就減去一。爲零的時候,循環結束!
碰到二者都可以取%運算爲零的時候!趕緊break。要不只會是結果爲1!
這樣就可以取得最大公約數啦!
最小公倍數:
先決條件: i=1;
不斷增加,極端情況會出現最小公倍數是二者的乘積!所以以這個界限爲限定條件!
道理都是取%運算!
do{
if(i%a==0&&i%t==0)
{
min=i;
break;
}
i++;
}while(i<=a*t);
這樣就可以獲得最小公倍數啦!
整體代碼:
#include<iostream>
using namespace std;
int main()
{
int a,t,min,max;int i;
cin>>a>>t;
if(a>=t)
i=t;
else
i=a;
do{
if(a%i==0&&t%i==0)
{
max=i;
break;
}
i--;
}while(i>0);
i=1;
do{
if(i%a==0&&i%t==0)
{
min=i;
break;
}
i++;
}while(i<=a*t);
cout<<max<<" "<<min;
}
圖片:
OJ執行結果: