問題文

解答例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とかを与えてみると、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 'ではありません'))