728x90
💡 (프로젝트 오일러 2번문제) 피보나치(Fibonacci) 수열의 각 항은 바로 앞의 항 두개를 더한 것입니다. 1과 2로 시작하는 경우 이 수열은 아래와 같습니다.
1, 2, 3, 5, 8, 13, 21, 34, 55, 89, ...
4백만 이하의 짝수 값을 갖는 모든 피보나치 항을 더하면 얼마가 됩니까?
문제출처: https://euler.synap.co.kr/problem=2
Python의 기본 수식인 ‘나머지(%)’ 및 '반복(for문)/조건문(if문)' 활용하기
Python에서 기본 수식과 반복구문을 활용하여 푸는 문제이다.
피보나치 수열의 첫번째 항과 두번째 항을 초기값으로 입력하여 준 후,
fibo = [1, 2] # 리스트 형식으로 피보나치 수열의 초기변수 설정 |
반복문(for문)을 이용하여 다음 피보나치 수열을 계산하고,
for i in range(1, 4000000): fibo_temp = fibo[i-1] + fibo[i] #fibo_temp : 다음 피보나치 수열을 임시로 저장하기 위한 변수 ...(이하 생략)... |
조건문(if문)을 이용하여 짝수인 경우 결과값(result 변수)에 더하여 주면 결과 값은 쉽게 도출된다.
if n % 2 == 0: result += n # 나머지를 구하는 수식(%)을 활용하여 짝수인 경우 판별 |
정답은 아래 '더보기'를 클릭!
더보기
Answer: 4613732
Code(Python)
#
# Problem 2. Even Fibonacci numbers
# Link : https://projecteuler.net/problem=2
#
# Define 'Cal' function to calculate result value
def Cal():
fibo = [1, 2] # Set initial Fibonacci numbers
result = 0
# Loop for get fibonacci numbers
for i in range(1, 4000000):
fibo_temp = fibo[i-1] + fibo[i]
if fibo_temp > 4000000:
break
fibo.append(fibo_temp)
# Add only Even
for n in fibo:
if n % 2 == 0:
result += n
return result
if __name__ == '__main__':
print(Cal())
728x90
'Computer Science > Euler Project' 카테고리의 다른 글
Problem 4: Largest palindrome product (0) | 2022.10.03 |
---|---|
Problem 3: Largest prime factor (0) | 2022.10.03 |
[코딩문제] 오일러 프로젝트 1번(Problem 1: Multiples of 3 or 5) (0) | 2022.10.02 |