CCF NOI 1028 判斷互質 :利用歐幾里得演算法最大公因數
題目描述
輸入兩個正整數m和n,判斷m和n是否互質(即最大公約數為1),是則輸出Yes,否則輸出No。
輸入:輸入兩個整數m和n,中間用空格隔開。
輸出:如互質輸出Yes,否則輸出No。
樣例輸入:36 56
樣例輸出:No
資料範圍限制:1<=n,m<2^31
題目分析:
1、m,n取值範圍都極大,無法通過暴力計算
2、判斷互質的標準為最大公約數是否為1
具體程式碼:
1、常規輸入m,n
int m, n;
cin >> m >> n;
2、歐幾里得演算法求最大公因數max
int a = m, b = n, ok = 1, max, r, q;
while (ok) {
r = a % b; //餘數
q = a / b; //商
if (!r) { //餘數為零時
max = b; //最大公約數為除數
ok = 0; //跳出迴圈
}
else { //繼續運算
a = b; //令新被除數為舊除數
b = r; //令新除數為舊餘數
}
}
3、判斷是否互質輸出
if (max == 1)cout << "Yes";
else cout << "No";
C++滿分完整程式碼如下:
#include<iostream>
using namespace std;
int main() {
int m, n;
cin >> m >> n;
int a = m, b = n, ok = 1, max, r, q;
while (ok) {
r = a % b;
q = a / b;
if (!r) {
max = b;
ok = 0;
}
else {
a = b;
b = r;
}
}
if (max == 1)cout << "Yes";
else cout << "No";
return 0;
}
相關文章
- 求最大公公約數(最大公因數)—— 歐幾里得演算法演算法
- 歐幾里得演算法與 EX演算法
- 萬能歐幾里得演算法演算法
- [待更新]歐幾里得演算法(輾轉相除法)與擴充歐幾里得演算法演算法
- 【質數判斷】給定兩個數,判斷這兩個數是否互質?
- 擴充套件歐幾里得套件
- 淺談擴充套件歐幾里得演算法套件演算法
- 演算法設計與分析-01歐幾里得演算法
- 類歐幾里得演算法學習筆記演算法筆記
- 數論學習筆記 (4):擴充套件歐幾里得演算法筆記套件演算法
- 擴充套件歐幾里得演算法公式快速推導套件演算法公式
- Python如何用歐幾里得求逆元Python
- C語言判斷素數,判斷質素演算法C語言演算法
- C++等差數列(數論、歐幾里得輾轉相除gcd)C++GC
- 輾轉相除法(歐幾里得演算法)(gcd)模板及其原理演算法GC
- 28、(向量)歐幾里得距離計算
- 質數的判斷
- 第六章 數學問題 -------- 6.5 歐幾里得演算法及其擴充套件演算法套件
- 質數判斷、質因子分解、質數篩
- JavaScript判斷數字是否是質數JavaScript
- 洛谷 P6362 平面歐幾里得最小生成樹
- js之普通/高效判斷質數JS
- 尤拉函式、整除分塊和擴充套件歐幾里得函式套件
- 歐幾里德的遊戲遊戲
- 判斷一個數是否為質數(程式碼)
- Python 判斷質數的另一種方法Python
- 第六章 數學問題 -------- 6.7【擴充套件歐幾里得】一步之遙套件
- 演算法學習記錄02-判斷輸入數字是不是質數演算法
- python怎麼判斷一個數是幾位數Python
- 判斷素數
- 素數判斷
- python怎麼判斷星期幾Python
- 最安全的型別判斷型別
- 判斷一個數是不是質數(素數),3種方式介紹
- 求最大質因數
- 【每日一題】 3232. 判斷是否可以贏得數字遊戲每日一題遊戲
- js判斷物件的幾種方法JS物件
- C----判斷兩個整數乘積幾進位制