본문 바로가기

카테고리 없음

(정수론/파이썬) 소수 개수 구하는 함수

# getPrimes(num): num 이하 소수와 그 개수를 세는 함수
# getPrimesCount(num): num 이하 소수의 개수를 세는 함수

def isPrime(num):
  root_val = round(num ** 0.5) # 제곱근 값을 구한다
  for i in range(2, root_val+1): # 제곱근값+1 까지만 약수를 조사해도 충분하다
    if num % i == 0:  # 중간에 나눠지면 소수가 아니다
      return False
  return True   


# 2 ~ num 까지의 소수 모두 구해서 리턴... 갯수도 리턴
def getPrimes(num):
  lst = []
  for i in range(2, num+1):
    if isPrime(i):
      lst.append(i)
  return lst, len(lst)

def getPrimesCount(num):
  count = 0
  for i in range(2, num+1):
    if isPrime(i):
      count += 1
  return count    

print(getPrimes(10))
print(getPrimes(59))

rate  = {}
for x in range(10, 100000, 1000):
  phi_x = getPrimes(x)[1]   #i 10, ... 4
  rate[x] = round(phi_x/x, 6)

print(rate)

lst, _ = getPrimes(100)