문제
https://www.acmicpc.net/problem/1929
1929번: 소수 구하기
첫째 줄에 자연수 M과 N이 빈 칸을 사이에 두고 주어진다. (1 ≤ M ≤ N ≤ 1,000,000) M이상 N이하의 소수가 하나 이상 있는 입력만 주어진다.
www.acmicpc.net
문제는 위 사이트를 참고해주세요.
풀이
def findPrime(num):
if num == 1:
return False
n = int(num ** 0.5)
for k in range(2, n+1):
if num % k == 0:
return False
return True
m, n = map(int, input().split())
for i in range(m, n+1):
if findPrime(i):
print(i)
먼저 수가 소수인지 아닌지 판별하는 함수를 만들어줍니다.
1은 소수가 아니기 때문에 1일 들어올 경우 false를 리턴합니다.
그렇지 않으면 들어온 값에 루트를 씌우고 그 값을 int형으로 n에 저장합니다.
ex)) num = 4 --> n = 2, num = 5 --> n=2, num = 121 --> n=11
그리고 2부터 시작하는 for문을 돌려서 num % k 값이 0인 경우 false
아니면 true를 리턴합니다.
함수를 끝내고 m,n을 입력받아 for문을 돌려 소수를 판단합니다.
전에 했던 코드로 진행하면 시간초과가 나와서 찾아보니
https://jongmin92.github.io/2017/11/05/Algorithm/Concept/prime/
소수 구하기 (에라토스테네스의 체)
소수(Prime Number)는 약수로 1과 자기 자신만을 가지는 정수입니다. 정수론의 기본 정리에 의해 모든 자연수는 단 하나의 소수들의 곱으로 표현됩니다. 소수 구하는 알고리즘1. 기본적인 접근소수��
jongmin92.github.io
이런 알고리즘이 있었습니다.
에라토스테네스의 체를 이용해서 문제를 풀어보세요.
결과
'IT > 알고리즘' 카테고리의 다른 글
1일 N알고리즘 - #24 (0) | 2020.05.24 |
---|---|
1일 N알고리즘 - #23 (0) | 2020.05.22 |
1일 N알고리즘 - #21 (0) | 2020.05.21 |
1일 N알고리즘 - #20 (0) | 2020.05.21 |
1일 N알고리즘 - # 19 (0) | 2020.05.20 |
댓글