質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

Q&A

解決済

2回答

3853閲覧

素数の合計数を出したい

dokugakusets

総合スコア10

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

0グッド

0クリップ

投稿2021/05/07 07:42

指定範囲内の素数の合計を出したいです。

python3

1コード 2def sumsum(n): 3 prime_list=[2] 4 sum=0 5 for i in range(1, n): 6 for j in prime_list: 7 if not i%j == 0: 8 print(i) 9 sum+=i 10 return sum 11n=10 12print(sumsum(n)) 13#素数の出し方を色々調べてみたのですが、奇数になってしまいます。素数を出すにはどうすればよいのでしょうか。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

1T2R3M4

2021/05/07 07:47

素数の求め方に関して自身で調べたことを追記していただけませんか。
dokugakusets

2021/05/08 08:01

def prime(n): from itertools import count, islice return n>1 and all(n%i for in islice(count(2), int(n**0.5)-1)) という式等を見つけたのですが、私のレベルでは理解できずに、奇数を出してから素数を出すようにしようと思ったのですが、そこで行き詰まってしまいました。
guest

回答2

0

ベストアンサー

組み込み all 関数を使うとスマートに書けます。

Python

1# n 未満の素数の合計を求める 2def prime_sum(n): 3 lst = [] 4 for i in range(2, n): # 素数は 2 以上 5 if all(i % e for e in lst): 6 lst.append(i) 7 return sum(lst) 8 9n = 10 10print(prime_sum(n)) # 17

投稿2021/05/07 12:24

lehshell

総合スコア1156

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

dokugakusets

2021/05/08 08:03

all関数を使うのですね。ありがとうございます。all関数を調べてみます!
guest

0

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))

投稿2021/05/07 08:23

coolwind0202

総合スコア708

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

dokugakusets

2021/05/08 08:05

ありがとうございます!appendを使ってprime_listにlistに素数を付加して行くことで、素数だけが出せるのですね。すごいです!全然思いつきませんでした。ありがとうございます!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問