とある質問サイトに,以下の投稿があった。そのサイトでは,適切に投稿しないとインデントが反映されないので,インデントは直しておいたが,もしかしたら,質問者のインデントも不適切な部分があったのかもしれない。
import math
number = input("正の整数を入力してください: ")
def trial_division(target):
dest = int(math.sqrt(target))
for i in range(2,dest):
if target % 1 == 0:
print(str(target) + "は素数ではありません")
return
print(str(target) + "は素数です")
trial_division(number)
というプログラミングを作成したのですが、エラーが出ました。
6行目と最後の行が間違っているようですが、なにが間違っているのでしょうか。
唯一の回答者は,
targetという変数が意味不明ですな
numberじゃね?
ってより、numberをtergetにすりゃいいってはなしかなー
などと与太を飛ばしております。
あなたならわかりますよね。
#############################
論理エラーでしょうね。range(2,dest) は range(2, dest + 1) としないとだめ(Python 特有の罠)
target % 1 の分母は 1 ではなく i だというのは,本か何かのプログラムの写し間違い?(変数名がおかしいしなあ)
6行目 のエラーは math.sqrt(target) で起きているんだろうね。入力した number は,文字列だから,数値演算できない。
最後の行 の間違いというのは,input と def の位置が悪いと言うこと。
全部ダメだ
import math
def trial_division(number):
dest = int(math.sqrt(number))
for i in range(2, dest + 1):
if number % i == 0:
print(str(number) + "は素数ではありません")
return
print(str(number) + "は素数です")
number = int(input("正の整数を入力してください: "))
trial_division(number)
trial_division(23)
trial_division(24)
trial_division(25)
trial_division(1000000007)