Find centralized, trusted content and collaborate around the technologies you use most.
Teams
Q&A for work
Connect and share knowledge within a single location that is structured and easy to search.
誰かが与えられた2つの数の最低公約数(1を除く)を計算するためのいくつかの速い方法を提案できますか?1つの方法は、GCD(a、b)> 1であるかどうかをチェックし、素因数化(aおよびb)を行い、結果として最小公約数を選択することです。
これを行うためのより良い方法はありますか?
例:LCF(20,30)= 2、LCF(13,39)= 13
結局、両方を除算するか、またはに達するものが見つかるまで、両方の数を素数で除算しようとするよりも良いものはないと思います。sqrt(min(a,b))
sqrt(min(a,b))
2から値n/2にループするだけです。ここで、nは2つの数値のうち小さい方です。for(int i = 2; i <= n / 2; i ++)if(n%i == 0 && m%i == 0)break;のように条件をループに入れます。
iはあなたの必要な値です。