ACMNO.7題目描述 輸入兩個正整數m和n,求其最大公約數和最小公倍數。 輸入 兩個整數 輸出 最大公約數,最小公倍數 樣例輸入 5 7 樣例輸出 1 35 來源/分類 C語

題目描述

輸入兩個正整數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執行結果:
在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章