C++は2つの数の最大公約数を求めます
897 ワード
構想1:a,bの2つの数を与えて、小さい数をcに与えて、c=b(a>bを設定してもいい)にさせて、aとbをcに対して余剰演算をして、cから順番に1を減らして下へ遍歴して、両者の余剰がすべて0になるまでcを返して、さもなくば循環遍歴を続けます.
コードは次のとおりです.
構想二:転がり相除去法
a>bを仮定すると、aがbによって除去されない場合、bはaに割り当てられ、残りはbに割り当てられ、aがbによって除去されるまでa%bが繰り返し実行される.このときbの値を返すと最大公約数となる.
コードは次のとおりです.
明らかに、方法2は方法1よりも効率的であり、使用方法2を優先的に推奨する.
参考文献:http://blog.csdn.net/a1414345/article/details/51770430
コードは次のとおりです.
#include
int gcd(int a,int b)
{ int c;
c=(a>b)?b:a;
while(a%c!=0||b%c!=0)
{ c--;
}
return c;
}
int main()
{ int a,b,max_div;
cout<>a>>b;
max_div=gcd(a,b);
cout<
構想二:転がり相除去法
a>bを仮定すると、aがbによって除去されない場合、bはaに割り当てられ、残りはbに割り当てられ、aがbによって除去されるまでa%bが繰り返し実行される.このときbの値を返すと最大公約数となる.
コードは次のとおりです.
#include
int gcd2(int a,int b)
{ int c;
if(a>a>>b;
max_div=gcd2(a,b);
cout<
明らかに、方法2は方法1よりも効率的であり、使用方法2を優先的に推奨する.
参考文献:http://blog.csdn.net/a1414345/article/details/51770430