#author("2026-06-25T22:57:03+09:00;2023-02-23T23:33:34+09:00","default:vip","vip")
#author("2026-06-26T03:12:34+09:00;2023-02-23T23:33:34+09:00","default:vip","vip")
[[問題文>練習問題#o8db2119]]

解答例1
 def is_prime(x):
   if x < 2:
     return False
   if x == 2:
     return True
   if x % 2 == 0:
     return False
 
   a = 3
   while a**2 <= x:
     if x % a == 0:
       return False
     a = a + 2
 
   return True
 
 x = int(input('値を入力してください: '))
 if is_prime(x):
   print('素数です')
 else:
   print('素数ではありません')

解答例2
 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(f"{n}は素数" + ('です' if is_prime(n) else 'ではありません'))

解答例3~
実質的に素数列挙であり相当に非効率的。計算量は大きく見積もって O(x^(1.5)/log(x)) 。解答例1・2の O(√x) に大きく劣る。
実質的に素数列挙であり相当に非効率的。計算量は大きく見積もって O(n^(1.5)/log(n)) 。解答例1・2の O(√n) に大きく劣る。
 a = 代入する値
 primes = [2]
 is_prime = False
 
 if a < 2:
     pass
 elif a % 1 != 0:
     pass
 elif a == 2:
     is_prime = True
 elif a % 2 == 0:
     pass
 else:
     for x in range(3, a+1, 2):
         for p in primes:
             if p**2 > x:
                 break
             if x % p == 0:
                 x = 0
                 break
         if x:
             primes.append(x)
     
     if a in primes:
         is_prime = True
         
 if is_prime:
     print("素数である")
 else:
     print("素数ではない")

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