https://www.acmicpc.net/problem/1978
<문제 해설>
소수란 자신과 1을 제외한 약수가 없는 수를 뜻한다. 그래서 간단히 어떤수를 1부터 어떤수까지 나눠보는 알고리즘을 만들면 된다.
<예시>
입력 : 1 3 5 8
1 : 소수가 아니다.
3 : 1과 3만 약수이니 소수.
5 : 1과 5만 약수이니 소수.
8 : 1,2,4,8이 약수이니 소수가 아니다.
출력값 : 2
<코드>
import sys
N = int(sys.stdin.readline())
numbers = list(map(int,sys.stdin.readline().split()))
count = 0
for number in numbers:
check = 0
if number == 2:
count +=1
if number != 1:
if number%2 != 0:
for j in range(3,number-1,2):
if number%j == 0:
check = 1
break
if check == 0:
count +=1
print(count)
<코드 설명>
import sys //sys라이브러리 불러오기
N = int(sys.stdin.readline()) //N 정수로 받아오기
numbers = list(map(int,sys.stdin.readline().split())) //숫자들 빈공간을 규칙으로 찾아오기
count = 0 //소수의 개수를 기록하는 변수
for number in numbers: //number리스트에있는 숫자들 꺼내오기
check = 0 //나누어지는 수가 있는지 확인하기 없으면 0
if number == 2: //2는 1,2만있어서 소수이다
count +=1 //개수증가
if number != 1: // 1은 소수가 아니라 1은 빼주기
if number%2 != 0: //2로 나누어지는 지 확인 나누어지지 않으면 진행
for j in range(3,number-1,2): //3부터 2씩 증가하면서(짝수는 2로 나누어서 검사했으니 이번엔 홀수만)number까지
if number%j == 0: //숫자가 나누어지면 나머지가 0임으로
check = 1 //소수가아니라는 채크
break //다른수로 더 나누어볼 필요가 없으니 break
if check == 0: //소수라면
count +=1 //소수 개수 증가
print(count) //개수 출
'Coding Test > Python' 카테고리의 다른 글
[Python/백준] 1181 단어 정렬 (0) | 2023.01.12 |
---|---|
[Python/백준] 10866 덱 (0) | 2023.01.12 |
[Python/백준] 10845 큐 (0) | 2023.01.12 |
[Python/백준] 10828 스택 (0) | 2023.01.11 |
[Python/백준] 2869 달팽이는 올라가고 싶다 (1) | 2023.01.11 |
Coding, Software, Computer Science 내가 공부한 것들 잘 이해했는지, 설명할 수 있는지 적는 공간