알고리즘/백준 문제풀이

[백준] 1929 소수 구하기 파이썬 풀이 (기본수학2)

자바칩 프라푸치노 2021. 6. 20. 01:14

코드

x, y = map(int, input().split())

for i in range(x, y+1):
    if i == 1: #1은 소수가 아뉘지!
        continue
    for j in range(2, int(i** 0.5)+1 ):
        if i%j==0:
            break
    else:
        print(i)

풀이

소수는 자신과 1밖에 약수가 없는 수이다.

그럼 모든 수를 돌면서 나누어 떨어지는 수가 있는지 없는지 보면 된다!

그런데 꼭 모든 수를 봐야할까!

해당 수의 제곱근까지만 나눠보면 된다.

약수는 대칭으로 이루어져있기 때문에

(예) 12의 약수는 1 2 3 4 6 12 / 1*12 , 2*6, 3*4 로 대칭

25의 약수는 1 5 25 / 1*25 , 5*5 로 대칭

제곱근 보다 같거나 작은 수까지만 나눠보고 나누어 떨어지는게 있냐 없냐 확인하면 된다

 

 

728x90