[[問題文>練習問題#o8db2119]] 解答例1 # -*- coding: utf-8 -*- def preme_check(x): if x<2: return 0 if x==2 : return 1 if x%2==0: return 0 a=3 while a**2 <= x: if x%a==0: return 0 a=a+2 return 1 x=input ('値を入力してください') if preme_check(x)==1: print '素数です' if preme_check(x)==0: print '素数ではありません' exit() 解答例2 a = 代入する値 s = [2] if a < 2: print(u"素数ではない") elif a % 1 != 0: print(u"素数ではない") elif a == 2: print(u"素数である") elif a % 2 == 0: print(u"素数ではない") else: for x in range(3,a + 1): for y in s: if x % y == 0: break else: if max(s) == y: s.append(x) if a % y == 0: print"素数ではない" if a in s: print(u"素数である") ↑aに123456789とかを与えてみると、わりとたくさん「素数ではない」と言う。 ↑aに123456789とかを与えてみると、3回「素数ではない」と言ってプログラムが終わらない。 解答例3 # -*- coding: utf-8 -*- def is_prime(n): sq = int(n ** .5) for d in range(2, sq+1): if n % d == 0: return 0 return n > 1 n = int(input('値を入力してください: ')) print('{0}は素数'.format(n) + ('です' if is_prime(n) else 'ではありません'))