最近、私はいくつかの簡単なC言語の問題を磨くようになりました。最大公約数と被写体の最小公倍数を達成するために探している、彼は行って、まだ未熟な発見したという印象があり、すべて私が使用した後のレビューのために、アイデアを書き留めることにしました。
次のようにすべての大規模から小規模までの最大の需要は、、最大公約数の条件を満たすことが最初ですので、私は、直接の暴力、1トライずつを解決する方法を考えるまず第一に
1の#include <iostreamの> 2の#include <stdio.hの> 3 使用して 名前空間をSTD。 4 INT メイン() 5 { 6 int型M、N。 7 int型の共通= 1000年。 8 CIN >> M。 9 CIN >> N。 10 一方、(1 ) 11 { 12 13 かの(M個の%の共通== 0 && N%の共通== 0 ) 14 { 15 COUT << 共通。 16 休憩; 17 } 18 19 他{ 20 common-- 。 21 } 22 23 } 戻り 0 。 24 }
もちろん、その効率は明らかに高くありませんが、これは実際に最も直接的な方法をより良く理解ですが、数字が成長したとき。
ここで第二の方法は、「ユークリッド」があります:
この方法もまた、我々はここで大小2つの数値を表し、最初の2つの数字、最大A minをとり、理解されます。
最初のステップ:最大%の分で得られた結果は、我々はそれを格納する変数tempを取ります。したがってTEMPは最大%の分=。
ステップ2:分をTEMP = 0になるまで上記の処理を継続、TEMPの値が割り当てられ、値min maxを割り当て、一時(すなわち、丸いMAX)の最大公約数で、すなわち
1の#include <iostreamの> 2 使用して 名前空間STDを、 3 のint main()の 4 { 5 INT TEMP = 1 、MAX、MIN。 6 cinを>> マックス。 7 cinを>> 分。 8 一方(TEMP) 9 { 10 TEMP =最大%の分; 11 最大値= 分; 12 分= TEMP。 13 } 14 COUT << マックス。 15 リターン 0 ; 16 }
最小公倍数の最大公約数を取得した後、非常に短い(MAX *分)に等しい答え、/ TEMPなり、点と最大公約数を計算最小公倍数。