[[問題文>練習問題#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 'ではありません'))

トップ   編集 差分 履歴 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS