a024.最大公因數(GCD)
a024.最大公因數(GCD)
| 解題思路 :
例如找出75 ,30的最大公因數
(1) 畫出75*30的矩形
(2)以短邊30為邊長,切割出2個30*30的正方形,矩形變成15*30
(3)以短邊15為周長,切割出2個15*15的正方形
(4)矩形無法再切割,最大公因數為15
例如找出68、30的最大公因數
(1)若x%y = 0,則y為最大公因數
(2)否則x轉成y,y轉成x%y
| 程式碼 :
<基礎解>
/* a024. 最大公因數(GCD) skyblue https://zerojudge.tw/ShowProblem?problemid=a024 AC (2ms, 348KB) */ #include <bits/stdc++.h> using namespace std; int main(){ ios::sync_with_stdio(0); cin.tie(0); int x,y,k; while(cin >> x >> y){ while(x%y){ k = x%y; x=y; y=k; } cout << y <<"\n"; } return 0; }
<遞迴解>
/* a024. 最大公因數(GCD) 遞迴解 https://zerojudge.tw/ShowProblem?problemid=a024 2023/12/21 sss AC (3ms, 332KB) */ #include <bits/stdc++.h> using namespace std; int gcd(int x, int y){ if(y == 0) return x; else return gcd(y, x%y); } int main(){ int a,b; scanf("%d%d", &a, &b); printf("%d", gcd(a,b)); return 0; }
留言
張貼留言