728x90
소수의 조건
- 약수가 1과 자기 자신 밖에 없는 수
- N이 소수가 되려면, 2보다 크거나 같고, N-1보다 작거나 같은 자연수로 나누어 떨어지면 안된다.
소수를 구하는 방법
- 어떤 수 N이 소수인지 아닌지?
- N이하의 모든 소수를 구하는 방법
1. 어떤 수 N이 소수인지 아닌지? : 소수의 정의를 이용하는 방법, 약수의 특징을 이용하는 방법, 2~루트N까지 나누어 떨어지는지 (약수가 있는지 판별) 검사해 보는 방법이 있다.
이때, 직접 루트N을 구하는 것이 아니라, 값을 찾을 때 i = 2 - 루트N이기 때문에 i제곱이 N보다 작거나 같다는 범위를 사용하여 문제를 해결한다. (실수는 근사값이기 때문에, 정수의 표현을 사용하는 것이 안전)
Example)
https://www.acmicpc.net/problem/1978
1978번: 소수 찾기
첫 줄에 수의 개수 N이 주어진다. N은 100이하이다. 다음으로 N개의 수가 주어지는데 수는 1,000 이하의 자연수이다.
www.acmicpc.net
Solution)
def is_prime(x):
if x<2:
return False
i = 2
while i*i <=x:
if x%i == 0:
return False
i+=1
return True
n = int(input())
a = list(map(int,input().split()))
ans = 0
for x in a:
if is_prime(x):
ans +=1
print(ans)
728x90
'코딩테스트' 카테고리의 다른 글
골드바흐의 추측 - 백준 6588 [Python] (0) | 2021.07.16 |
---|---|
소수 - 백준 1929 [Python] (0) | 2021.07.16 |
최대공약수/최소공배수 - 백준 2609 [Python] (0) | 2021.07.16 |
약수의 합 - 백준 17425 [Python] (0) | 2021.07.15 |
약수의 합 2 - 백준 17427 [Python] (0) | 2021.07.15 |
댓글