삼성 python 3.7이 되므로 모든 코딩테스트에서 사용 가능하다.
프로그래머스 백준에서도 사용가능하다.
# B1929 소수 구하기
import sys
input = lambda: sys.stdin.readline().rstrip()
def solution(num1, num2):
global n, m
n, m = num1, num2
for i in range(n, m + 1):
# for 문에서 break 안되기에 1이 출력된다.
if i == 1:
continue
for j in range(2, int(i ** (1 / 2) + 1)):
if i % j == 0:
break
else:
print(i)
if __name__ == '__main__':
n, m = 0, 0
solution(*map(int, input().split()))
위 문제에서 이중 for 문에서 소수이면은 모든 for문을 돌고 for문을 빠져 나오게 된다. 이러한 얘들은 소수이기에 출력을 한다.
즉 for-else는 모든 for문을 도는 얘들만 들어갈 수 있다. break일 때를 제외하고 처리할 때 좋다.
def is_prime(num) -> bool:
if num == 1:
return False
for i in range(2, int(num ** (1 / 2)) + 1):
if num % i == 0:
return False
return True
어떠한 수가 소수인지 판별하는 방법은 다음의 로직으로 해결할 수 있다.
이는 어떠한 수의 약수는 어떠한 수의 제곱근으로 대칭을 이루기 때문이다.