728x90
#random모듈과 math모듈 사용
import math as m
import random as r
#n이 소수인지 아닌지를 반환(소수이면 1, 아니라면 0)
#trivial division 이용
def is_prime(n):
i = int(m.sqrt(n))
k = 2
while k <= i:
if(n % k == 0):
return 0
k += 1
return 1
#2부터 n까지의 소수를 리스트로 반환
def generate_all_primes(n):
prime_num = []
for i in range(2, n + 1):
if is_prime(i):
prime_num.append(i)
return prime_num
#a부터 b까지의 소수들 중에서 랜덤으로 한 가지 소수를 반환
def generate_random_prime(a, b):
prime_num = []
num = 0
for i in range(a, b + 1):
if is_prime(i):
prime_num.append(i)
num += 1
return prime_num[r.randrange(0, num)]
#메인함수
def main():
print("is_prime(11):",is_prime(11))
print("is_prime(253):",is_prime(253))
print("is_prime(65537):",is_prime(65537))
print("generate_all_primes(50):",generate_all_primes(50))
print("generate_all_primes(100):",generate_all_primes(100))
print("generate_all_primes(1000):",generate_all_primes(1000))
print("generate_random_prime(2, 11):",generate_random_prime(2, 11))
print("generate_random_prime(100, 200):",generate_random_prime(100, 200))
print("generate_random_prime(1000, 2000):",generate_random_prime(1000, 2000))
main()
728x90
'Sejong University > Number theory' 카테고리의 다른 글
Factoring (0) | 2022.04.23 |
---|---|
Mersenne Prime (0) | 2022.04.23 |
Modular Exponentiation (0) | 2022.04.23 |
GCD and Extended GCD (0) | 2022.04.23 |
Factorial and Binomial Function (0) | 2022.04.23 |
댓글