1207:求最大公約數問題
阿新 • • 發佈:2020-07-20
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); } ```