본문 바로가기
Sejong University/Number theory

Prime Number

by reindeer002 2022. 4. 23.
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

댓글