前提・実現したいこと
偶数と素数をそれぞれ判別するプログラムを作っているのですが、whileを使うところを実行すると、期待した値が返ってきません。原因が分からず、対処に困っています。
該当のソースコード
python
1S = 12 2P = input("Please enter the number: ") 3p = int(P) 4while True: 5 if p%2 == 0: 6 p = p + 1 7 print(p) 8 break 9 elif p == 1 or 3 or 5 or 7: 10 S = S - p 11 p = p + 2 12 print(p) 13 elif p%3 != 0: 14 if p%5 != 0: 15 if p%7 != 0: 16 if p < S: 17 S = S - p 18 p = p + 2 19 print(p) 20 else: 21 S = S - 1 22 if S == 0: 23 print(p) 24 break 25 else: 26 p = p + 2 27 print(p) 28 else: 29 p = p + 2 30 print(p) 31
最初にS=12という値を作って(?)おく
- pを入力する(input)
- pが偶数か判別する(yesならp=p+1をして出力)
- pが偶数でない場合、素数かどうかの判別をする
...まず、pが1,3,5,7のいずれかであるかを確かめ、違った場合は次に3と5と7で割れるかを試し、もし割れなかったら素数とみなすことにしました。
4. もし素数でなかった場合、p=p+2をし、2番に戻る(偶数かどうかを判別する)
5. 素数の場合、S(=12)よりpが小さいか判別する
6. p<Sの時、S=S-p, p=p+2をし、2番に戻る
7. p>=Sの時、S=S-1をし、S=0か確かめる
8. S=0の場合、pを出力してプログラムを終了する
9. S!=0の場合、p=p+2をして2番に戻る
というようなプログラムを作りたいと思っています。
しかし、なぜか2番に戻ることができません。実行してもへんてこな値になってしまいます。
ループの使い方がなっていないため、どなたか解決策のある方にご指摘していただきたいです。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。