2차 프로젝트가 끝나고 알고리즘 강의가 시작됐다..ㅎ
오늘 처음 접한 알고리즘 너무 어려워...
이해 안되면 유형이라도 외워보기가 목표!
1주차 숙제 1
Q. 정수를 입력 했을 때, 그 정수 이하의 소수를 모두 반환하시오.
input = 20
def find_prime_list_under_number(number):
prime_list = []
for n in range(2, number+1):
for i in prime_list:
if n % i == 0:
break
else:
prime_list.append(n)
return prime_list
result = find_prime_list_under_number(input)
print(result)
- 빈 prime_list를 만들어준다.
- range 함수를 이용해 구간을 정해준다.(소수는 1보다 큰 자연수 중에 1과 자기 자신만을 약수로 가지는 수 이므로 0과 1 제외)
- range 함수: 숫자 리스트를 자동으로 만들어 주는 함수
-
range(10)은 0부터 10 미만의 숫자를 포함하는 range 객체를 만들어 준다.(0~9)# ex >>> a = range(10) >>> a range(0, 10)
-
- range 함수: 숫자 리스트를 자동으로 만들어 주는 함수
- range 함수안의 n 이라는 숫자와 prime_list 안의 i라는 숫자라는 for 문을 두고 if 문으로 n 나누기 i 가 0이라면 break처리를 해서 n 값이 prime_list 안에 들어가지 않도록 한다.
- else를 통해 n 나누기 i가 0이 아니라면 prime_list에 n 값이 들어가도록 한다.
코드를 짜며 실수한 것.
- 1. else의 경우 if의 아래쪽 동일한 위치에 있어야 되는데 for문 밑에 위치를 해서 코드가 잘 실행되지 않았다.
아쉬운 점.
- 위의 작성한 코드는 2번째로 효율적인 코드인데 제일 효율적인 아래 코드를 잘 이해하기가 어려웠다! 좀 더 파볼예정이다..ㅎ
-
input = 20 def find_prime_list_under_number(number): prime_list = [] for n in range(2, number + 1): for i in prime_list: if n % i == 0 and i * i <= n: break else: prime_list.append(n) return prime_list result = find_prime_list_under_number(input) print(result)
-