py
1for j in prime_list:
2 if not i%j == 0:
3 print(i)
4 sum+=i
整数 i
が素数かどうかを調べるのなら、過去に発見したすべての素数に対して剰余を計算するべきでしょう (厳密には √i
まで処理すれば十分ですが)。
prime_list
には 2 が入っていますが、もしこのままなら、 9 も素数と判定されてしまいます。なぜならこのプログラムでは 2
で割り切れるかどうかしか検討されないからです。
また、このプログラムでは prime_list
の要素が変更されません。
このプログラムが素数として扱う数字はずっと 2 だけです。
提示されたソースを元に以下のように書きました。
py
1def sumsum(n):
2 prime_list=[2]
3 for i in range(2, n):
4 for j in prime_list:
5 if i % j == 0:
6 break
7 else: # 「もし過去に発見したすべての素数で割り切れなければ」
8 print(i)
9 prime_list.append(i) # 「prime_listに追加」
10 return sum(prime_list) # sum 関数を使ってリストの数値の合計を算出できます
11n=10
12print(sumsum(n))