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

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

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

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

Q&A

解決済

3回答

1366閲覧

素数判定のプログラム

sakurazensen

総合スコア16

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

0グッド

0クリップ

投稿2018/06/28 08:32

#値を定める
from random import randint
n=randint(1,100)
#それ以下の数に約数があるかどうか
#繰り返し+条件分岐で定義
for i in range(2,n):
if n%i==0:
print('素数でない')
break
else:
print('素数')
print(n)
#出力する

素数判定プログラムを作りたいのですが、このコードでは素数でない数だと綺麗に'素数でない'と出力されますが素数の場合大量の'素数'が出力されてしまいます。繰り返しを抜け出す方法が自分の知識の中だとわかりません。どなたかわかるかたいませんでしょうか

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

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

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

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

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

hayataka2049

2018/06/28 08:34

コードのインデントが消えて見づらいので、質問文の再編集画面を開き、コード部分を選択して<code>ボタンを押し、「ここに言語を入力」を「python」に書き換えた状態に編集してください
guest

回答3

0

ベストアンサー

for文のelse節を使いましょう。

python

1from random import randint 2n=randint(1,100) 3 4for i in range(2,n): 5 if n%i==0: 6 print('素数でない') 7 break 8else: 9 print('素数') 10print(n)

for文のelse節はfor文がbreakで中断されなかったときのみ実行されます。

投稿2018/06/28 08:36

hayataka2049

総合スコア30933

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

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

sakurazensen

2018/06/28 08:54

ありがとうございます!
guest

0

for-elseを使うのが最も簡潔ですが、いちおう別解として。
素数判定を関数に切り出すとアーリーリターンを用いることができます。

Python

1def is_prime(num): 2 for i in range(2, num): # 第二引数は sqrt(num)+1 でも良い 3 if num % i == 0: 4 return False 5 6 return True

この方法だとPython以外の言語でも広く実装できます。

コードの書き方について

teratailには、上記のようにコードを見やすく表示する機能があります。
質問編集画面を開き、コードを選択した状態で<code>ボタンを押してください。
特にPythonの場合、インデントが崩れるとコードの意味が変わってしまいます。
Python

投稿2018/06/28 09:03

LouiS0616

総合スコア35660

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

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

0

質問とは少し離れますが、面白い記述があったので、
Pythonを使って高速素数判定をしてみる
フェルマーの小定理、ユークリッドの互除法、カーマイケル数

なお、コードは 対応しているMarkdownの機能 の[コードを入力]を使ってください。

投稿2018/06/28 08:51

Orlofsky

総合スコア16415

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

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

sakurazensen

2018/06/28 08:54

ありがとうございます!参考にさせていただきます
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問