728x90

 

소수란?


1보다 큰 자연수 중에 약수가 1과 자기자신뿐인 수를 말하며

즉 양의 약수를 두 개만 가지는 자연수이다.

 ex) 2, 3, 5, 7, 11 ,,

 

1. 알고리즘 코드 구현

  
  def isPrime(num):
      for i in range(2, num):
          if num % i == 0 :
              return False
      return True
            

2. math 내장함수를 사용하여 구현

  
  # math 내장함수 사용
  import math
  def isPrime2(num):
      for i in range(2, math.floor(math.sqrt(num))+1):
          if num % i == 0 :
              return False
      return True
      

 

 


 

Q. 1보다 크고 100보다 작은 소수는 모두 몇 개 있는가?

 

A. 25 개 ( 위의 사용자 함수 사용 )

  
  cnt = 0
  for i in range(2,100):
      if isPrime2(i) :
          cnt +=1

  print(cnt)
    

 

 

에라토스테네스의 체란?


대표적인 소수 판별 알고리즘으로 소수를 빠르게 판별할 수 있다.

2부터 소수로 판별이 된 수의 배수를 모두 걸러내는 것이다.

ex) 2는 소수이므로 2의 배수인 4,6,8,10,,, False(소수가 아님)로 변경한다.

    3은 소수이므로 3의 배수인 6,9,12,15,,, False(소수가 아님)로 변경한다.

    4는 False임으로 if문 통과 ,, 

  
  def countPrime(num):
      # 리스트 초기화 : 0,1 자리는 False로 초기화, 2~100까지 True로 시작한다.
      sieve = [False, False] + ([True] * (num-1))
      count = 0
      
      # 2부터 자신의 수까지
      for i in range(2, num+1):
          if sieve[i]:  # True(소수)일 경우 카운트
              count += 1
          for j in range(i*2, num+1, i):  # ex) 2의 배수 리스트는 False로 변경 4,6,8,,,
              sieve[j] = False

      return count, sieve

  # 1부터 100까지의 소수의 갯수
  print(countPrime(100)) 
  

 

 

 

출처 : Youtube 주니온TV 아무거나연구소의 코린아, 코딩하자! with 파이썬
728x90
댓글
250x250
최근에 올라온 글
«   2024/10   »
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31
Total
Today
Yesterday