
【擬似言語アルゴ⑤】最大公約数3種類(ユークリッドの互除法の引き算版/mod版, ブルートフォース的)
このNoteでは、最大公約数の算出アルゴを3つ考えます。引き算をシーソーする方法が科目A/Bに出ています。
>【FEA】令和05年問11のNote
>【FEB】サンプル1問04のNote
「ユークリッドの互除法」って言うのですが。出題は引き算版。本来は剰余(mod)みたい(wikipedia)。「そのうち出るんじゃないかな」と思いNoteを作りました。あと、全部の数を試すブルートフォース的な力業アルゴも追加。
シンプルなアルゴ/擬似言語と、トレース図解で、パパっと学習できるように作りました。トレースのコツも体験できます。>【図解で流し見】擬似言語の解法11のNote❷
覗いて下さったら嬉しいです。
テキストの基礎を生かして、プログラム的な考察/工夫を学んでいきます。基礎と実用にギャップを感じる方のために作りました。
>【FEB】擬似言語の教科書Note
このNoteは、私がIT専門学校で授業したことを基に作成しています。IT専門学校でFEは第一目標として、カリキュラムが構築されています。何も知らずに入学しても、1年生10月にはFE合格していきますよ。実績ある教育ノウハウを詰め込んだので、少しでも信頼して頂けたら嬉しいです。
>全Noteへのリンク(FE節)
※科目Aのテーマ別/科目B/旧FE午後など沢山作りました!
ユークリッド(引き算)
引き算でシーソーするやつ。
>【FEA】令和05年問11のNote
>【FEB】サンプル1問04のNote
○整数型: gcd_sub(整数型: num1, 整数型: num2)
整数型: a ← num1
整数型: b ← num2
/* x と y が等しくない間、引き算を繰り返す */
while (a ≠ b)
if (a > b)
a ← a - b /* xの方が大きければ y を引く */
else
b ← b - a /* yの方が大きければ x を引く */
endif
endwhile
return a /* お互いが同じ値になったら、その値が最大公約数 */簡単な値でトレースしてみます(a=4, b=6)。逆でも動くかなも重要。>【図解で流し見】擬似言語の解法11のNote❷

>【図解で流し見】擬似言語の解法11のNote❷
>【FEA】令和05年問11のNote
>【FEB】サンプル1問04のNote
ユークリッド(mod)
最大公約数を算出するアルゴ(ユークリッドの互除法, wikipedia)は、引き算よりも割り算/余りを使う方が効率良いらしい(後で確認します)。