문제

약수가 1과 자기 자신뿐인 자연수를 소수(prime number)라 한 다. 어떤 수를 입력받아 그 수가 소수인지를 True 또는 False로 반환하는 함 수 is_prime()을 정의하라. 그 후, 정의한 함수를 이용해 1 이상 100 미만의 모든 소수의 합을 계산하라.

코드

def is_prime(number):
    """number가 소수인지 여부를 반환한다."""
    # 1은 소수가 아니다.
    if number == 1:
        return False

    # 2 이상 number 미만인 모든 수를 순회하며
    for number2 in range(2, number):
        # 그 수 가운데 number의 약수가 있는지를 검사한다.
        if number % number2 == 0:
            # 약수가 있다면 number는 소수가 아니다.
            return False

    # 약수가 하나도 없다면 number는 소수다.
    return True

# 1 이상 100 미만의 모든 소수의 합
total = 0
for number in range(1, 100):
    if is_prime(number):
        total += number
print(total)

실행 결과

1060

해설