見出し画像

[Algorithm 04] Primary Number

※トップ画像はPixabayから引用しています

 素数検索

一般的な方法

import math

def is_primary(n):
   if n <= 1:
       return False
   for i in range(2, int(math.sqrt(n)) + 1):
       if n % i == 0:
           return False
       return True


val = input('Input Number: ')
for i in range(int(val)):
   if is_primary(i):
       print(i)


エラトステネスの篩

import math

def get_primary(n):
   if n <= 1:
       return []
   primary_list = [2]
   limit = int(math.sqrt(n))

   odd_list = [i + 1 for i in range(2, n, 2)]
   while limit > odd_list[0]:
       odd = odd_list[0]
       primary_list.append(odd)

       # 割り切れない奇数だけ残す
       odd_list = [i for i in odd_list if i % odd != 0]
   
   return primary_list + odd_list


val = input('Input Number: ')
print(get_primary(int(val)))

世界がよりよくなればいいな