[백준] 소수 찾기 1978번 파이썬 Python 수학

Jeony·2021년 12월 3일
0

백준

목록 보기
21/25
post-thumbnail

📌생각해보기

  1. 소수는 해당 수를 1과 나누었을 때 나머지가 0이 나오고 해당 수를 자기 자신을 나누어서 나머지가 0이 나오는 수. 딱 1과 자기 자신을 나누었을 때만 0이 나와야한다.
    3 % 1 = 0
    3 % 2 = 1
    3 % 3 = 0
    -> 3은 소수

    9 % 1 = 0
    9 % 2 = 1
    9 % 3 = 0
    9 % 4 = 1
    9 % 5 = 4
    9 % 6 = 3
    9 % 7 = 2
    9 % 8 = 1
    9 % 9 = 0
    -> 9는 "9 % 3 = 0"때문에 소수 아님

  2. 위 1의 내용처럼 소수는 1과 자기 자신을 나누었을 때 0이 나와야하기에
    for문으로 해당 수를 1부터 자기 자신까지 나누어서 0이 두 번 나오면 소수로 판별한다.

📌내가 작성한 코드

x = int(input())
n = list(map(int, input().split()))

count = 0
for i in range(x):

    check = 0
    for j in range(1, n[i]+1):
        if n[i] % j == 0:
            check += 1
        
    if check == 2:
        count += 1

print(count)

📌풀이

  1. x: 수의 총 갯수를 받는 변수 설정.
    n: 소수를 판별할 수들을 받을 변수 설정 (소수를 판별할 때 리스트로 하나 하나 비교해야하기 때문에 리스트로 바꿔준다.)
    count: 최종 목적은 소수의 count를 세는 것이기 때문에 변수 설정.
x = int(input())
n = list(map(int, input().split()))

count = 0
  1. 첫 번째 for문: 소수를 판별할 수가 한 개가 아닌 여러 개이기 때문에 x만큼 반복시킨다.
    check: 소수를 1부터 해당 수까지 나누어서 0이면 1씩 올라가도록 해주는 소수 판별 변수.
    두 번째 for문: 해당 수를 1부터 해당 수까지 나누어서 나머지가 0이면 check에 1씩 증가하도록 반복시킨다.

    두 번째 for문을 나왔을 때 check가 2가 되어 있으면 소수이므로 count에 1 증가시킨다.
for i in range(x):

    check = 0
    for j in range(1, n[i]+1):
        if n[i] % j == 0:
            check += 1
        
    if check == 2:
        count += 1
profile
알고리즘으로 문제를 해결하다가 포기함

0개의 댓글