[백준] 1978번 문제
소수찾기 : 주어진 수 N개 중에서 소수가 몇 개인지 찾아서 출력하는 프로그램을 작성하시오.
https://www.acmicpc.net/problem/1978
코드
input() #input으로 한줄 그냥 넘기기
b = list(map(int, input().split())) # 자료 받기
result = [] # result 리스트 만들기
for i in b: # for문 만들기
d = 1 # 제수 d = 1
verify = [] # 검증 리스트 생성
while d < 1001: # d가 1000이 넘어갈때까지
if d > 1: # 만약 d > 1이면
if i % d == 0: # 만약 b 리스트 안의 i번째 원소를 q로 나누었을때 나머지가 0이라면
verify.append('1') # 검증 리스트에 '1'을 추가한다
d += 1 # 제수 d에 1을 더해준다
if len(verify) == 1: #만약 검증 리스트의 길이가 1이면
result.append('1') # 결과 리스트에 '1'을 추가한다
print(len(result)) # 결과 리스트의 길이를 프린트해라
코드 설명
input() #input으로 한줄 그냥 넘기기
b = list(map(int, input().split())) # 자료 받기
자료를 받아준다
이때, 첫줄의 자료는 쓸모없으므로 input()해줘서 넘기자
result = [] # result 리스트 만들기
나중에 소수의 개수를 프린트하기 위해서 리스트를 만들어준다
for i in b: # for문 만들기
d = 1 # 제수 d = 1
verify = [] # 검증 리스트 생성
while d < 1001: # d가 1000이 넘어갈때까지
if d > 1: # 만약 d > 1이면
if i % d == 0: # 만약 b 리스트 안의 i번째 원소를 q로 나누었을때 나머지가 0이라면
verify.append('1') # 검증 리스트에 '1'을 추가한다
d += 1 # 제수 d에 1을 더해준다
앞에서 받은 자료 b를 반복해서 검증해준다
제수 d를 1로 설정해준다
verify라는 검증 리스트를 하나 생성한다
while d < 1001: 은 d가 1000이 넘어가면 false이므로 while문이 멈추게 된다
만약 d > 1이고 i%d == 0이라면 검증 리스트에 '1'을 추가한다
이 한 과정이 끝나면 제수 d에 1을 더해주고 반복한다
if len(verify) == 1: #만약 검증 리스트의 길이가 1이면
result.append('1') # 결과 리스트에 '1'을 추가한다
위 문장은 윗윗문장의 for문 하위에 있다
즉, while문을 끝내고 검증 리스트를 확인하는 단계이다
'검증 리스트의 길이가 1이면' == '제수가 1을 제외한 자기자신 뿐이라면'
결과 리스트에 '1'을 추가한다
print(len(result)) # 결과 리스트의 길이를 프린트해라
마지막으로 결과 리스트의 길이를 프린트하면?
Input 속 소수의 개수가 나온다
한번 실수하고 다시 고쳐서 맞았당..