メインコンテンツへスキップ
見出し画像

【擬似言語アルゴ⑤】最大公約数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)は、引き算よりも割り算/余りを使う方が効率良いらしい(後で確認します)。

     
     
    大学・専門学校の先生の解説Note。 学生時代にITパスポート試験・基本情報技術者試験・応用情報技術者試験を独学で高得点合格。情報処理安全確保支援士試験(セキスペ)・データベーススペシャリスト試験・ネットワークスペシャリスト試験・G検定なども取得。 2027年にPD-S受験予定。