오늘은 '프로젝트 오일러' 챌린지 2일차.
[1, 2]로 시작하는 수열의 피보나치 수열 중 4백만 이하의 값을 갖는 모든 피보나치 항의 합계 구하기
피보나치(Fibonacci) 수열의 각 항은 바로 앞의 항 두 개를 더한 것입니다. 1과 2로 시작하는 경우 이 수열은 아래와 같습니다. 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, ...
while문을 사용해 풀었다.
let sequence = [0,1],
sequence_even = [],
n = 0;
while(n <=4000000){
let a = sequence[sequence.length -1],
b = sequence[sequence.length -2];
n = a + b;
sequence.push(n);
if(n % 2 == 0){
sequence_even.push(n);
}
}
console.log(sequence, sequence_even);
/*** [ 0, 1, 1, 2, 3,
5, 8, 13, 21, 34,
55, 89, 144, 233, 377,
610, 987, 1597, 2584, 4181,
6765, 10946, 17711, 28657, 46368,
75025, 121393, 196418, 317811, 514229,
832040, 1346269, 2178309, 3524578, 5702887]
[2, 8, 34,
144, 610, 2584,
10946, 46368, 196418,
832040, 3524578] ***/
console.log('피보나치 수열 합 : ', sequence.reduce((partialSum, a) => partialSum+a, 0));
//피보나치 수열 합 : 14930351
console.log('짝수 피보나치 수열 합 : ', sequence_even.reduce((partialSum, a) => partialSum+a, 0));
//짝수 피보나치 수열 합 : 4613732
코딩테스트 알고리즘 문제를 푸는 것보다 수학문제 푸는게 더 재밌고 쉽다...ㅋㅋㅋㅋ
'TIL(today i learned) > Projec Euler-수학문제풀이' 카테고리의 다른 글
[4일차] 세 자리 수 곱해 대칭수(palindrome) 구하기 (0) | 2022.09.02 |
---|---|
[챌린지] [3일차] 가장 큰 소인수 구하기 (0) | 2022.09.01 |
[챌린지][1일차] 배수의 합 구하기 (0) | 2022.08.29 |