Differences between revisions 8 and 9
Revision 8 as of 2018-10-14 21:33:49
Size: 2902
Comment:
Revision 9 as of 2018-10-14 21:34:19
Size: 2599
Comment:
Deletions are marked like this. Additions are marked like this.
Line 17: Line 17:

 ||<|2>演習(7) ||<|2>基本課題(7a)||<|2>【関数定義】||<|1>[[https://ja.wikipedia.org/wiki/最小公倍数|最小公倍数]] lcm ( least common multiple )||
 ||<|1> [[../BP_007a|BP_02_007a_least_common_multiple.py|target="_blank"]]||
Line 67: Line 64:





----

基本問題(7)

*


概要

[ edit ]

*


ヒント

この課題で使うPythonの機能 (学習のヒント)

[ edit ]

  • この課題で使うPythonの機能 (学習のヒント) ...
    • 関数定義

    • print()関数

      • キーワードパラメータsepは区切り文字列,キーワードパラメータendは行末文字列です.

この課題の解き方 (問題解決のヒント)

[ edit ]

  • この課題の解き方 (問題解決のヒント) ....
    • 最小公倍数lcmは,最大公約数から求めることができます.

    • 正整数 xに対して,gcd(x,y) × lcm( x, y ) == x × yという関係があります

      • したがってgcdが分かれば,lcmを簡単に求めることができます
    • 関数lcm()を定義してください.
*


実行例

[ edit ]

  • 実行例(1) ... クリックすると拡大します

fig-01

*


プログラム例: 本質的な部分 (授業中に順次公開します)

[ edit ]

  • 解答は基本的に,下記 2 行の関数です.
    • 最大公約数から求めることができます.

    • 正整数 xに対して,gcd(x,y) × lcm( x, y ) == x ×  yという関係がある

      • したがってgcdが分かれば,lcmを求めることができる

   1 def lcm( x, y ):
   2     return( int( x * y / math.gcd( x, y ) ) )
*


高度な話題 (授業中,もしくは授業後に順次公開します)

[ edit ]

  • 高度な話題へのリンク: 授業の流れを阻害しないように別ページにします

    • (後日の回の授業内容にはなる可能性がありますが,この回の授業内容には含めません).
    • に関するものです.


プログラム例: 配布コード (授業中に順次公開します)

*

*

  • 解答は基本的に,下記 2 行の関数です.
    • 最大公約数から求めることができます.

    • 正整数 xに対して,gcd(x,y) × lcm( x, y ) == x ×  yという関係がある

      • したがってgcdが分かれば,lcmを求めることができる

   1 def lcm( x, y ):
   2     return( int( x * y / math.gcd( x, y ) ) )

   1 #!/usr/bin/env python
   2 # -*- coding: utf-8 -*-
   3 # ==============================================================================
   4 # * Copyright (c) 2018 IIJIMA, Tadashi
   5 # *       (IIJIMA Laboratory, Dept. of Science and Technology, Keio University).
   6 # ==============================================================================
   7 # ソフトウェア工学[02] 基本課題[02]-(007a)  BP_02_007a_least_common_multiple.py
   8 # BP(Basic Problem) 02-007a: 【関数定義】 【関数定義】 最小公倍数 lcm ( least common multiple )を求める関数を定義する
   9 #        2018-10-03 飯島 正 (iijima@ae.keio.ac.jp)
  10 # ==============================================================================
  11 # ----- 数学関数を取り扱うためのmathモジュールをインポートする ------
  12 import math
  13 # ==============================================================================
  14 # ===== 【関数定義】 最小公倍数 lcm ( least common multiple )を求める関数 =====
  15 def lcm( x, y ):
  16     return( int( x * y / math.gcd( x, y ) ) )
  17 # ==============================================================================
  18 # ===== 【メイン・プログラム】  =====
  19 # ----- オープニングメッセージ -----
  20 print( "最小公倍数数LCMを求めるを求める (二つの整数を入力してください): " )
  21 
  22 # ----- パラメータの入力 -----
  23 x = int( input( "  一つ目の整数を入力してください>>> " ) )
  24 y = int( input( "  二つ目の整数を入力してください>>> " ) )
  25 
  26 # ----- 結果の表示 ----
  27 print( lcm( x, y ) )
  28 # ==============================================================================

SoftEng: Python/Prog/Practice/Basic/02/BP_007a (last edited 2018-10-28 14:44:37 by TadashiIijima)