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
'IT > 알고리즘' 카테고리의 다른 글
[python/알고리즘] 최소공배수 구하기 (0) | 2021.05.10 |
---|---|
[python/알고리즘] 소인수분해 하기 (3) | 2021.05.07 |
[python/알고리즘] 최대 공약수 구하기 (0) | 2021.05.05 |
[python/자료구조] 동적 계획법(Dynamic Programming) (0) | 2021.03.27 |
[python/자료구조] 재귀함수 (0) | 2021.02.15 |
댓글
최근에 올라온 글
TAG
- 주니온
- 파이썬
- 경사하강법
- db
- sklearn
- Scikit
- Min()
- slqd
- MongoDB
- Pandas
- 기계학습
- cnn
- Programmers
- Ai
- 인공지능
- SQL
- VGGNet
- Python
- 자료구조
- algorithm
- 부스트코스
- 알고리즘
- numpy
- 머신러닝
- Project
- SQLD
- OpenCV
- Max()
- 딥러닝
- 프로그래머스
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- Total
- Today
- Yesterday
250x250