본문 바로가기

내일배움캠프/Today I Learned

[내배캠] 나의 열번째 회고록

잡아둔다고 풀릴 것인가 과연

 

알고리즘이 풀리지 않는다...

소수를 반환하는 문제가 이해가 되지 않아서 

진도가 계속 delay되고 있다.

그래도 정답을 보면서 대충 넘어가고 싶지 않아서 힘들더라고 고민해보고 있다. 

 

# Q. 정수를 입력 했을 때, 그 정수 이하의 소수를 모두 반환하시오.
# 소수는 자신보다 작은 두 개의 자연수를 곱하여 만들 수 없는 1보다 큰 자연수이다.
# 20이 입력된다면, 아래와 같이 반환해야 합니다!
# [2, 3, 5, 7, 11, 13, 17, 19]


input = 20


def find_prime_list_under_number(number):
    prime_num = []

    for i in range(2, number):
        if number % i == 0:
            continue
        else:
            prime_num.append(i)

        number -= 1

    return prime_num

result = find_prime_list_under_number(input)
print(result)

지금 나의 상태.. 

 

일단 소수는 1보다 큰 자연수 중 1과 자기 자신만을 약수로 가지는 수다.

예를 들어, 5는 1×5 또는 5×1로 수를 곱한 결과를 적는 유일한 방법이 그 수 자신을 포함하기 때문에 5는 소수

 

20보다 아래의 수 중에서 소수만을 뽑는 문제인데 

1과 20은 짝을 맞춘 소수이기 때문에 제외하고

나머지 2~19까지 1과 나를 제외한 수로 나누었을 때 나머지가 1일 경우에는 소수!!

나머지가 0일 경우에는 소수가 아닌 것으로 확인해야 된다고 생각했다. 

 

금요일부터 토요일까지 끙끙 머리를 싸매고 생각해보았는데 이제 이렇게 글로 작성해서 원리를 이해해보니 지금에서야 이해가 되어버렸다..