(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をそのまま貼り付けしましたが、結構面倒です。もっといい方法を探す予定。
遅ればせ、ですが、まさに、東大のコンテンツをやっています。
返信削除解法が分らずに、ググったら、このページに来ました。
簡明な解法の提供、ありがとうございます。