【最大公約数】FINAL問題 最大公約数 (paizaランク C 相当) 解答例 – PHP編【Aランクレベルアップメニュー】
【Aランクレベルアップメニュー】 > 【最大公約数】FINAL問題 最大公約数 (paizaランク C 相当)
※リンク先へ移動する為には「paiza」へのログインが必要です。
本当にね…アルゴリズムね…無理だって(´;ω;`)
案の定自分では解けず、色々と調べてようやく通過。前回と同じく別言語のサンプルコードを何となく「PHP言語ならこうかな?」っとコードを書いてry。
テストケースには巨大な数値が設定されているので総当たりで公約数を調べることができません。今回の場合、「ユークリッドの互除法」というアルゴリズムを使います。
これは 「AとBの最大公約数は、BとA%Bの公約数と等しい」 という性質を利用して最大公約数を求める方法…らしいです。いや…分からん(;^ω^)
解答例
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
<?php $input = explode(" ",trim(fgets(STDIN))); $a = $input[0]; $b = $input[1]; function gcd($m, $n){ //ユークリッドの互除法 if($n > $m) list($m, $n) = array($n, $m); while($n !== 0){ $tmp_n = $n; $n = $m % $n; $m = $tmp_n; } return $m; } echo gcd($a , $b); ?> |

