Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- 빅분기
- 전문가특강
- 첫알고리즘평가
- 반별이벤트
- kb 취업교육
- kb취업교육
- sql
- kb it's your life 6기
- sql내장함수
- prefixsum #C언어
- kb it's your life
- 금융권it
- 데이터분석자격증
- autohotkey
- SQL데이터타입
- SQLD
- KB국민은행
- kbit교육
- 이차원배열
- 멀티캠퍼스
- kb 기자단
- 금융권 it
- kb it's your life 기자단
- 빅데이터분석기사
- 빅데이터분석기사필기
- 데이터분석
- 금융권 부트캠프
- 부트캠프
- kb네트워킹캠프
- 빅분기필기
Archives
- Today
- Total
지식보부상님의 공부 일지
소수 판단 함수(1) 본문
소수인지 판단하는 함수를 작성하면,
우선 가장 간단하게 생각하면 다음과 같다.
1
2
3
4
5
6
7
8
9
10
11
|
def is_prime(N):
c = 0
for i in range(2, N):
if N % i == 0:
c += 1
break
return c == 0
for numbers in range (2, 101):
if(is_prime(numbers)):
print(numbers)
|
cs |
주어진 수보다 작은 숫자들로 모두 나눠보고,
나눠지는 수가 있다면 소수가 아니게 된다.
이 생각에서 한단계 나아가서
어떤 수 N에 대해 N이 a*b로 나눠지는 수라면
a와 b의 최대는 루트 N이라는 생각을 하면,
1
2
3
4
5
6
7
8
9
10
11
12
|
def is_prime(N):
c = 0
for i in range(2, int(N**0.5)+1):
if N % i == 0:
c += 1
break
return c == 0
for numbers in range (2, 201):
if(is_prime(numbers)):
print(numbers)
|
cs |
위와 같이 루트 N 이하의 값에 대해서만 나눠봐도 된다.
마지막으로,
정말 한단계 더 나아가서
이번에는 소수로만 수들을 나눠도 된다는 생각을 할 수 있다.
물론 이때도 루트 N 보다 작은 수들로만 나눠도 된다.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
|
prime = [2]
def is_prime(N):
c = 0
for i in prime:
if (N != 2 and N % i == 0):
c += 1
break
if i > int(N**0.5)+1:
break
if (c==0 and N != 2):
prime.append(N)
return c == 0
for numbers in range (2, 1001):
if(is_prime(numbers)):
print(numbers)
|
cs |
이때 2가 소수임은 잘 알려진 사실이므로,
초기에 prime에 넣어주었고,
그 이후로는 append를 통해 소수들을 prime 리스트에 넣어주었다.
'파이썬 문제풀이' 카테고리의 다른 글
백준 3009번: 네 번째 점 (3) | 2024.12.06 |
---|---|
백준 10156번: 과자 (4) | 2024.12.06 |
백준 4101번: 크냐? (1) | 2024.12.06 |
백준 2480번: 주사위 세개 (1) | 2024.12.06 |
에라토스테네스의 체- prime counting function (0) | 2021.05.21 |