2018年4月17日火曜日

プログラミング学習:10までの素数を表示させる。(python GCI chapter1)

東大 GCIデータサイエンティスト育成講座演習コンテンツ Chapter 1の課題です。

(1)10までの素数を表示させるプログラムを書いてください。なお、素数とは、1とそれ自身の数以外は約数をもたない正の整数のことをいいます。

k=10

for t in range(2,k+1):    
    for i in range(2,t+1):
        if t%i ==0:
            break

    if i==t:
        print(t)
2
3
5
7

特に工夫も何もなく、2から順に割り算を繰り返し、割り切れたらbreak、そのものの数まで割り切れなかったら素数とみなしています。

ついでに素数判定。
こちらも同様で、2から順に割っていって、割り切れる数があれば素数。そのものの数まで割り切れなかったら素数ではないと表示。
t=211

for i in range(2,t+1):
    if t%i ==0:
        break

if i==t:
    print(str(t)+"は素数")
else:
    print(str(t)+"は素数ではない")
211は素数

(2)上記をさらに一般化して、Nを自然数として、Nまでの素数を表示する関数を書いてください。
def sosu(N):

    for t in range(2,N+1):    
        for i in range(2,t+1):
            if t%i ==0:
                break

        if i==t:
            print(t)
課題1の素数表示をdefで関数化。関数呼び出しは、sosu()のかっこの中に数字を入れる。

sosu(10)
2
3
5
7

参考:
東京大学グローバル消費インテリジェンス寄付講座
http://gci.t.u-tokyo.ac.jp/
東京大学松尾研 GCIデータサイエンティスト育成講演習コンテンツ 公開ページ
http://weblab.t.u-tokyo.ac.jp/gci_contents/
プログラミング学習:東京大学のデータサイエンティスト育成講座(GCI)の演習コンテンツ(無料)
https://eneprog.blogspot.com/2018/04/python10gci-chapter1.html

追伸:bloggerでコードを表示させるのに、どうすればいいかと悩んで、jupyter notebookのhtmlをそのまま貼り付けしましたが、結構面倒です。もっといい方法を探す予定。

1 件のコメント:

  1. 遅ればせ、ですが、まさに、東大のコンテンツをやっています。
    解法が分らずに、ググったら、このページに来ました。
    簡明な解法の提供、ありがとうございます。

    返信削除

//SyntaxHighlighter CDNより https://cdnjs.com/libraries/SyntaxHighlighter // 対応言語