1. 程式人生 > 實用技巧 >1207:求最大公約數問題

1207:求最大公約數問題

1207:求最大公約數問題

時間限制: 1000 ms 記憶體限制: 65536 KB
提交數: 9257 通過數: 5842
【題目描述】
給定兩個正整數,求它們的最大公約數。

【輸入】
輸入一行,包含兩個正整數(<1,000,000,000)。

【輸出】
輸出一個正整數,即這兩個正整數的最大公約數。

【輸入樣例】
6 9
【輸出樣例】
3

先奉上我的程式碼

#include<iostream>

using namespace std;

typedef long long ll;

ll a,b;

ll gcd(ll x,ll y){
	return y==0?x:gcd(y,x%y);
}

int main(){
	cin>>a>>b;
	
	cout<<gcd(a,b)<<endl;
	
	return 0;
}

  

題目要求:求所給的兩個數的最大公因數
學過高等代數的同學都知道方法是輾轉相除法,當然學習過程式語言的同學可能這個題目的做法都講過,畢竟這個可以說是一道期末高概率的題目了
先說一下輾轉相除法

```cpp
//輾轉相除法 
int gcd(int a,int b){
	int c;
	while(b!=0){//當b等於零的時候找完最大公因數 
		c=a%b;
		a=b;
		b=c;
	}
	return a;
}
```

再提供一下輾轉相減法

```cpp
//輾轉相減法
int gcd(int a,int b){
	return a==b?a:gcd(a>b?a-b:a,b>b?b-a;b);
} 
```

不過,我認為最簡便的還是這個程式碼
就把他當作一個程式碼塊,記住就可以了,用處挺大的

```cpp
ll gcd(ll x,ll y){
	return y==0?x:gcd(y,x%y);
}
```