Project Euler - 002(Fibonacci sequence)
사이트
문제
영문
Each new term in the Fibonacci sequence is generated by adding the previous two terms. By starting with 1 and 2, the first 10 terms will be:
1, 2, 3, 5, 8, 13, 21, 34, 55, 89, ...
By considering the terms in the Fibonacci sequence whose values do not exceed four million, find the sum of the even-valued terms.
한글
피보나치 수열의 각 항은 바로 앞의 항 두 개를 더한 것이 됩니다. 1과 2로 시작하는 경우 이 수열은 아래와 같습니다.
1, 2, 3, 5, 8, 13, 21, 34, 55, 89, ...
짝수이면서 4백만 이하인 모든 항을 더하면 얼마가 됩니까?
풀이과정
- 리스트에 시작항목
lst = (1,2)를 입력해 둔다. - 항목을 더한 값을 저장할 변수
(num)를 하나 두고0으로 초기화해 둔다. - 400만 까지라고해서 반복문
(while)을 사용한다. - 리스트에서 마지막 항목을 뽑아올 수 있기 때문에 마지막 항목과 그 이전 항목을 가져와 더하면 다음 항목의 값이 생성된다.
- 그 생성된 수가 400만 보다 작다면 리스트에 입력하고, 400만 보다 커지면 반복문을 빠져나온다.
- 생성된 값에서 짝수만 더해야 하므로 다시 리스트의 값들을 2로 나누어 떨어지는 수들만 더한다.
내가 푼 답안
lst = # 시작항목 입력num = 0 # 다음 항목을 계산해서 저장하기위한 변수while num <= 4000000: # 400만 번 이하까지 반복한다.num = + # 수열의 마지막 항목을 계산if num <= 4000000: # 계산된 수가 400만 이하일 때 리스트에 추가else: # 400만 이상이라면 반복문 종료break# 모든 항목에서 짝수들만의 합을 구해야 함s = 0for x in lst:if x % 2 == 0: # 2로 나누어 나머지가 0이면 짝수이다.s += xprint("sum : ", s)
문제를 잘못읽어 다른 방향으로 풀었던 방법
문제를 순전히 짝수 2, 4로 시작한다고 오독해서 풀었던 방법
lst =while <= 4000000:num = +if num <= 4000000:else:breakprint(lst)print("sum : ", )
#Project_Euler #question2 #프로젝트_오일러 #python3 #Fibonacci_sequence #피보나치_수열
댓글 없음:
댓글 쓰기