반응형
1. 문제
주어진 수 N개 중에서 소수가 몇 개인지 찾아서 출력하는 프로그램을 작성하시오
2.입력
첫 줄에 수의 개수 N이 주어진다. N은 100이하이다. 다음으로 N개의 수가 주어지는데 수는 1000이하의 자연수이다
3. 출력
주어진 수들 중 소수의 개수를 출력한다.
4. 문제해결
n = int(input())
nums = map(int,input().split())
answer = 0
for i in nums:
if i >1:
for a in range(2,i):
if i % a != 0:
answer+=1
print(answer)
처음에는 error를 지정안해주고 answer만 지정을 했다. 그러나
nums를 1 3 5 7을 주어졌을때 answer가 3이 아니라 9가 나왔다. 무슨 일인가 했더니
숫자 5일때보면 a가 2, 3, 4 된다 조건문을 넘어가면 answer가 1 이였으니 3이 더해져 4가 된다.이런식으로 소수를 잘 못걸려졌다. 그래서 보완한게 error라는 변수를 하나를 줘서 만약에 error가 0이면 아예 조건문이 끝내고 다시 최상위 for문으로 돌아가는 코드를 구현했다.
n = int(input())
nums = map(int,input().split())
answer = 0
for i in nums:
error = 0
if i >1:
for a in range(2,i):
if i % a == 0:
error +=1
if error == 0:
answer+=1
print(answer)
1. 먼저 N의 갯수를 출력한다
2. nums에 N의 개수 만큼 1000이하 자연수를 임의로 출력한다.
3. for문을 이용해 하나씩 빼면서 조건을 준다. i가 1보다 클때
4.for문을 이용해 만약에 i %a가 0이면 소수가 아니므로 error에 1이 더해지고
5. error가 0이면 answer가 1이 더해진다.
반응형
'백준' 카테고리의 다른 글
[백준] 11653번 소인수분해_Python (0) | 2023.04.25 |
---|---|
[백준] 2824번 최대공약수_python (0) | 2023.04.24 |
[백준] 골드바흐의 추측_python (0) | 2023.04.21 |
[백준] 로또_python (0) | 2023.04.19 |
[백준] 2609번 최대공약수와 최소공배수 (0) | 2023.04.17 |