알고리즘/이론

[알고리즘] 소수 나열하기/ 소수 찾기

자바칩 프라푸치노 2021. 6. 12. 23:11

# Q. 정수를 입력 했을 때,
#  그 정수 이하의 소수를 모두 반환하시오. 

# 소수는 자신보다 작은 두 개의 자연수를 곱하여
#  만들 수 없는 1보다 큰 자연수이다.

input = 20

# 소수는 자기 자신과 1외에는 아무것도 나눌 수 없다.
def find_prime_list_under_number(number):
    prime_list = []
    for n in range(2, number + 1): #2부터 number까지 반복
        for i in range(2,n): #2부터 number-1까지 반복
            if n % i == 0:
                break
        else:
            prime_list.append(n)

    return prime_list

result = find_prime_list_under_number(input)
print(result)

2부터 number까지 돌고

안에 for문은 2부터 number-1까지 돈다

하나씩 차근차근 보자면

n=2일때 i =2이고 이중 for문에서 반복문의 range가 2부터 1까지 돈다이므로 n=2일때는 반복문이 돌지않고 바로

prime_list에 2가 넣어진다

n=3일때 i가 2이고 이중 for문에서 반복문의 range가 2부터 2까지 돈다이므로 n=3일때는 반복문이 1번만 돌아서

3%2가 0인지 확인한다. 아니므로 prime_list에 3이 들어간다

n=4일때 i가 2이고 이중 for문에서 반복문의 range가 2부터 3까지 돈다이므로 n=4일때는 반복문이 2번 돌기로했는데 4%2가 0이므로 바로 break된다

...

 

728x90