C++練習14:2つの数の最大公約数gcdを求めます
C++練習14:2つの数の最大公約数gcdを求めます題 構想 コード タイトル
2つの等しくない正の整数の最大公約数gcdを求めます
構想
欧幾里得法(転がり相除法):欧幾里得アルゴリズムは転がり相除法とも呼ばれ、2つの非負の整数a,bの最大公約数を計算するために用いられる.1997と615の2つの正の整数の最大公約数を要求する場合、欧幾里得アルゴリズムを用いて、1997/615=3(余152)615/152=4(余7)152/7=21(余5)7/5=1(余2)5/2(余1)2/1=2(剰余0)これで最大公約数1は除数と剰余数で除算演算を繰り返し、剰余数が0の場合は現在の算式除数を最大公約数とすることにより、1997と615の最大公約数1が得られる.
コード#コード#
2つの等しくない正の整数の最大公約数gcdを求めます
構想
欧幾里得法(転がり相除法):欧幾里得アルゴリズムは転がり相除法とも呼ばれ、2つの非負の整数a,bの最大公約数を計算するために用いられる.1997と615の2つの正の整数の最大公約数を要求する場合、欧幾里得アルゴリズムを用いて、1997/615=3(余152)615/152=4(余7)152/7=21(余5)7/5=1(余2)5/2(余1)2/1=2(剰余0)これで最大公約数1は除数と剰余数で除算演算を繰り返し、剰余数が0の場合は現在の算式除数を最大公約数とすることにより、1997と615の最大公約数1が得られる.
コード#コード#
#include
using namespace std;
int main (){
int a,b,c,re;
cout << " !" << endl;
cout << " :" ;
cin >> a;
cout << " :" ;
cin >> b;
c = a; // ab , ,
if(a > b){
a = b;
b = c;
}
re = b % a;
while(re>0){
b = a;
a = re;
re = b % a;
}
cout <<" :" << a;
}