見出し画像

中学の数学 (7) 約数を python で探そう

[ サイトマップを見る ]

Python で約数をさがそう

6 の約数をpython をつかって求めてみましょう。

Idle を起動し,6を1で割ります。

>>>6/1
6.0

6.0 となりました。整数ですから,1 は 6 の約数です。

他も同様に調べてみましょう。

>>>6/2
3.0
>>>6/3
2.0
>>>6/4
1.5
>>>6/5
1.2
>>>6/6
1.0

整数になっているものが約数です。ひとつひとつ確認してみると,1 のほか,2. 3. 6 も約数であることがわかります。4 や 5 は割り切れますが,答えが小数になり,整数ではありませんから,約数ではありませんね。

では次に,100 の約数を調べてみましょう。

え!1 から 100 まで割り算をするの?たいへんです。

そこで,Python に計算してもらいましょう。

繰り返しの文

100 を元の数として,それを1から100までの数で100回割り算をします。100回繰り返しますが,python にはこの繰り返しを簡単に実現できます。

for 文を使います。

for i in range(1, 100+1):
    if 100 % i == 0:
        print(i)

これを Idleのコマンドラインに貼り付けて,エンターを2回押せば,次のように約数を出力してくれます。

1
2
4
5
10
20
25
50
100

さて,先ほどのコードを説明しておきましょう。

for i in range(1, 100+1):
    if 100 % i == 0:
        print(i)

1行目で,これから100 回繰り返しますと python に教えています。range(1, 100+1) によって,$${1, 2, 3 \cdots 100}$$ という数列が作られます。

1 から 101 までではなくて,1 から 100 まであることに注意が必要です。

これから100回何を繰り返すのかというと,2行目と3行目に書かれているコードを繰り返します。

  • 1回目の繰り返しの時点で,変数 i には 1 が入っています。そして,2行目と3行目に書かれているコードを繰り返します。

  • 2回目の繰り返しの時点で,変数 i には 2 が入っています。そして,2行目と3行目に書かれているコードを繰り返します。

  • 3回目の繰り返しの時点で,変数 i には 3 が入っています。そして,2行目と3行目に書かれているコードを繰り返します。

if 文

2行目に if からはじまるコードがあります。これを if 文といいます。
if とは英語で「もしも」という意味です。

if 条件が成立:
    実行

if のあとには条件が続きます。この場合は,100 % i が 0 というのが条件です。% はあまりを求める演算子で,100 を i で割ってあまりがなければ,つまり,割り切れれば,次の行のコードを実行します。

今回の場合は,割り切れれば,その割った数,i を出力するよう指示しています。
次に,20000 の約数を求めることになりました。20000 であっても大丈夫,先ほどのコード,書き換えるだけですね。

for i in range(1, 20000+1):
    if 100 % i == 0:  
        print(i)

これで大丈夫です。

関数

しかし,書き換えるのも面倒です。約数を求めたい数だけ示せば,自動的に約数を求めてもらいたいところです。

そのためには次のようにします。

def divisors(n):
    for i in range(1, n+1):
        if n % i == 0:  
           print(i)

これを Idle のコマンドラインに貼り付けて,エンターキーを2度押します。
その後,次のコードも貼り付けて,エンターキーを押しましょう。

divisors(100000)

すると,約数を出力してくれました。

もうこれからは,divisors() を使えば,約数を求めたい元の数を指定するだけでよくなりました。

divisors のようなはたらきをするものを関数といいます。

関数の定義は簡単です。まず最初に def と書きます。これはdefine,定義という英語です。これから関数を定義しますよといっているわけです。

そのあとに関数名を書きます。python がもともと使っている関数名,たとえば print などですね,それとぶつからないようにします。そのあとのカッコで引数に何をとるかを定義しています。引数は「ひきすう」と読みます。

この場合は割られる元の数が引数になります。それを変数 n で表現しています。
次の行以降,指定された変数を使って処理を行います。この場合は n の約数を探して,あれば出力しています。

def divisors(n):
    for i in range(1, n+1):
        if n % i == 0:
            print(i)

このコード,まだまだ改良のよちがありそうです。次回はこのコードを改良していきましょう。

演習1

約数は 1 と元の数を必ずとります。すると,n を元の数とするとき,1 と n は必ず約数になります。ですから,n % 1 が 0 になるかは確認する必要はありません。
1 と n は約数であるか確認しないコードを書いてください。ただし,1 と n も出力するようにしましょう。

ちょっとむずかしいぞ!

関連する書籍

[ サイトマップを見る ]

この記事が気に入ったらサポートをしてみませんか?