이 페이지는 코딩도장 데이터의 읽기 전용 정적 보관본입니다.

Even Fibonacci numbers

출처 : 프로젝트 오일러 2번문제, 한글 번역판


피보나치 수열의 각 항은 바로 앞의 항 두 개를 더한 것이 됩니다. 1과 2로 시작하는 경우 이 수열은 아래와 같습니다.

1, 2, 3, 5, 8, 13, 21, 34, 55, 89, ...

짝수이면서 4백만 이하인 모든 항을 더하면 얼마가 됩니까?

2017/06/06 01:31

S ReolSt

239개의 풀이가 있습니다.

발반따빠따빠뿌다뿌오
분섟어떠떠떠범속분오
삭반삮붇ㅇ아우쏙라초
싺삮다뿌아초아뽀쑧뻐
뽀석ㅇ반로뿌오섞숛ㅇ
해초정ㅇㅇ싻삯도다숙
몽섟오어서써석뻐서뻐

아희로 작성했습니다.

아희는 befunge와 비슷한 한글로 쓰여진 난해한 프로그래밍 언어입니다.

[아희 소개 / 스펙]

[아희 트위터]

[아희아희]

[아희돌그만둘래 프로그래밍 언어 설명 문서 - 버전 1.0.0]

#include <iostream>
#define print(A) std::cout << A << std::endl
typedef unsigned long long u2long;
template <u2long N>
struct fib
{static const u2long value = fib<N-1>::value + fib<N-2>::value;};
template <>
struct fib<1>
{static const u2long value = 1;};
template <>
struct fib<2>
{static const u2long value = 1;};
template <u2long N>
struct is_even
{static const bool result = (N % 2 == 0);};
template <>
struct is_even<0>
{static const int result = -1;};
template<u2long N, u2long aim>
struct is_not_exceed
{static const bool result = (N <= aim);};
template<u2long N, u2long aim>
struct correctfib
{static const u2long value = fib<N>::value * is_even<fib<N>::value>::result * is_not_exceed<fib<N>::value,aim>::result;};
template<u2long N, u2long aim>
struct correctfibsum
{static const u2long value = correctfib<N,aim>::value + correctfibsum<N-1,aim>::value;};
template<>
struct correctfibsum<1,4000000>
{static const u2long value = 0;};
int main()
{
    unsigned long long result = correctfibsum<33,4000000>::value;
    print(result);
}

보너스로 겉핧기식으로 배운 템플릿 메타프로그래밍을 사용해봤습니다. 이거 진짜 어렵네요

2017/06/06 01:32

S ReolSt

이 언어를 정말 쓰는 걸 본 적은 처음이네요. 대단하신 듯 - Flair Sizz, 2017/07/10 23:58
아희 재밌어요. 같이 합시다. - S ReolSt, 2017/07/13 01:57
a, b = [0,1]
sum = 0
while b <= 4000000:
    a = a + b
    b, a = a, b
    if b % 2 == 0: sum += b
print(sum)

4613732

Lv 2문제는 아닌거 같네요.. b <= 9e+300 까지는 확인했는데 그 이상은 무리..ㅎㅎ

2017/06/17 13:17

겨털에뽀뽀

이대로 하면 마지막 루프시 b가 4백만 초과인 짝수면 그대로 sum에 합쳐지지 않나요? - Creator, 2018/06/24 08:12
메모리를 이렇게 효율적으로 사용할 수 있네요. 잘 배웠습니다. - ­박철희, 2021/09/13 14:45
    public static void main(String[] args) {
        ArrayList<Integer> list = new ArrayList<>();
        list.add(1);
        list.add(2);
        for(int i=1;;i++){//피보나치 수열을 list에 저장 list에 들어간 값이 400만을 넘으면 멈춤
            list.add(list.get(i-1)+list.get(i));
            if(list.get(i-1)+list.get(i)>4000000)
                break;
        }

        list.remove(list.get(list.size()-1));//list에 마지막 인덱스 값을 제거(400만 넘으니깐)
        int sum=0;
        for(int i=0;i<list.size();i++){//짝수인 총합
            if(list.get(i)%2==0)
                sum+=list.get(i);
        }
        System.out.println(sum);


    }

답은 4613732

2017/06/15 16:51

kihyun lee

x = 0
y = 1
s = 0
while y < 40000001:
    x = x + y
    y, x = x, y
    if y % 2 == 0: s += y
print(s)

파이썬으로 하였습니다.

2017/07/30 12:57

P.Y.Thon

python 3.6

def fibonacci_evn_sum(n):
    f, f_evn_sum = [0,1], 0
    while f[-2]+f[-1] < n:
        if (f[-2]+f[-1]) % 2 == 0: f_evn_sum += f[-2]+f[-1]
        f.append(f[-2]+f[-1])
    return f_evn_sum

>>> fibonacci_evn_sum(4000000)
4613732

2017/06/07 03:46

예강효빠

Python입니다.

>>> fib = [1, 2]
>>> while fib[-1] <= 4000000:
...     fib = fib + [sum(fib[-2:])]
...
>>> fib[:10]
[1, 2, 3, 5, 8, 13, 21, 34, 55, 89]
>>> sum([t for t in fib if t % 2 == 0])
4613732

2021/04/11 19:59

최용

Ruby

fib = Hash.new {|h,n| h[n] = n < 2 ? n : h[n-1] + h[n-2] }
fib_sum = ->limit { (1..Float::INFINITY).lazy.map(&fib).
                      select(&:even?).take_while{|n| n < limit}.sum }

Test

expect( fib_sum[4_000_000] ).to eq 4613732

2017/06/06 14:08

rk

// 짝수 피보나치의 합 - C#
using System;

namespace EvenFibo
{
    class Program
    {
        static int Fibonacci(int n)
        {
            if (n < 2)
                return n;
            else
            {
                int temp, t1 = 1, t2 = 0;
                for (int i = 2; i <= n; i++)
                {
                    temp = t1;
                    t1 += t2;
                    t2 = temp;
                }
                return t1;
            }
        }
        static void Main(string[] args)
        {
            int finalsum = 0, i = 0;
            while(true)
            {
                int fib = Fibonacci(i);
                if (fib > 4000000)
                    break;
                if (fib % 2 == 0)
                    finalsum += fib;
                i++;
            }
            Console.WriteLine(finalsum);
            // 답은 4613732
        }
    }
}

2017/06/06 14:49

Jeong Hoon Lee

using System;

namespace ConsoleApp1
{
    class Program
    {
        static void Main(string[] args)
        {
            int result = 0;
            int cur_fibo = 1;
            int prev_fibo = 0;
            int even_sum = 0;

            while(cur_fibo <= 4000000)
            {
                result = cur_fibo + prev_fibo;  // 현재의 값과 전의 값을 더한 것이 다음 나올 숫자
                prev_fibo = cur_fibo;           // 현재의 값은 전의 값으로 이동
                cur_fibo = result;              // 다음에 나올 숫자를 현재의 값으로 이동

                Console.Write(result + "  ");   // 400만 이하의 피보나치 수열을 출력한다.

                if (result%2==0)    // 피보나치 수열 중에 짝의 합만 더하는 부분
                {
                    even_sum += result;
                }
            }
            Console.WriteLine();
            Console.WriteLine("400만 이하의 짝수의 합 : " + even_sum);
        }
    }
}

2017/06/08 17:18

만두우정

#include <stdio.h>


int main()
{
    int a = 1, b = 2, c, d, e = 0;
    for (; a <= 4000000;)
    {
        if (a % 2 == 0)
        {
            e = e + a;
        }
        c = a + b;
        a = b;
        b = c;
    }
    printf("%d", e);
    return 0;
}

2017/06/12 20:06

안재호

javascript

var fibonacci = (function(n) {
    var cache = [0, 1, 2];

    return function fib(i) {
        return cache[i] ? cache[i] : cache[i] = fib(i - 1) + fib(i - 2);
    }
})();

var res = 0,
    sum = 0;

for (let i = 1; (res = fibonacci(i)) <= 4000000; i++) {
    if (res % 2 === 0) {
        sum += res;
    }
}

console.log(sum);

>>> 4613732

2017/06/13 14:59

funnystyle

파이썬 3.6입니다.

def fib():
    a, b = 1, 1
    while True:
        yield b
        a, b = b, a + b

def main():
    g, s = fib(), 0
    for i in g:
        if i > 4000000:
            break
        elif i % 2 == 0:
            s += 1
    print(s)

2017/06/13 15:32

룰루랄라

c로 풀었습니다.

#include <stdio.h>

int main(int argc, const char * argv[]) {
    int frst = 1;
    int scnd = 2;

    int total = frst + scnd;
    int currNum = frst + scnd;
    int temp = 0;

    while (currNum <= 4000000) {
        if (currNum % 2 == 0) {
            total += currNum;
            printf("The current number is %d\n", currNum);
        }
        temp = currNum;
        currNum += scnd;
        scnd = temp;
    }

    printf("The total is: %d\n", total);

    return 0;

    /*
     실행결과:
     The current number is 8
     The current number is 34
     The current number is 144
     The current number is 610
     The current number is 2584
     The current number is 10946
     The current number is 46368
     The current number is 196418
     The current number is 832040
     The current number is 3524578
     The total is: 4613733
     */
}

2017/06/14 00:43

python을 이용하여 풀이하였습니다.

class Fibonacci:

    def Limit(self, limit):
        self.limit = limit

    def Fib(self):
        a, b = 1, 2
        list = [a, b]
        while a < self.limit:
            list.append(a + b)
            a, b = b, a + b

        print sum([num for num in list if num % 2 == 0])

Result = Fibonacci()

Result.Limit(4000000)
Result.Fib()

결과 4613732

2017/06/14 16:39

junhan_park

#include <stdio.h>

int main()
{
    int a=1,b=2;
    long long sum=0;
    while(a<=4000000)
    {
        if(!(a&1)) sum+=a;
        b=a+b;
        a=b-a;
    }
    printf("%lld\n",sum);
    return 0;
}

//  1 2 3 5 8 13 21

2017/06/15 15:34

박상영

fibonacci = [1,2]

while fibonacci[-1] < 4000000:
    fibonacci.append(fibonacci[-1]+fibonacci[-2])

evenFibonacci = [x for x in fibonacci if x%2 == 0]
print('400만보다 작은 짝수의 합: ',sum(evenFibonacci))

Python3 입니다. 답은 4613732

2017/06/16 22:59

SPJung

4백만이 어디까지인지는 for을 사용해서 직접 구했습니다. 자바로 작성한 다른분의 코드를 보니 이렇게 작성하는건 연산이 더 많이 일어나서 비효율적일것 같네요 ㅎㅎ

public class Main {
    public static void main(String[] args) {
        long sum = 0;
        for(int i=1;i<33;i++)
        {
            if(pibo(i)%2==0) {
                sum += pibo(i);
            }

        }
        System.out.println(sum);
    }

    public static long pibo(int n) {
        if(n==1) {
            return 1;
        }
        else if(n==2) {
            return 2;
        }
        else if(n>2) {
            return pibo(n-1)+pibo(n-2);
        }

        return 0;
    }
}

2017/06/17 12:42

JH


def fibo_even_sum(max_num):

    fibonacci_num = [1,2]
    even_sum = 0

    for i in range (0,max_num):
        if (fibonacci_num[i]+fibonacci_num[i+1])<max_num:
            fibonacci_num.append(fibonacci_num[i]+fibonacci_num[i+1])
        else:
            break

    for i in fibonacci_num:
        if i%2==0:
            even_sum = even_sum + i

    return even_sum


print("sum even of fibonacci :",fibo_even_sum(4000000))

2017/06/20 11:28

Bo Hyun Seo

파이썬 3.6입니다.

fibonacci = [1,2]
a=0; b=1; c=0

while(1):
    c = fibonacci[a] + fibonacci[b]
    if c < 4000000 : 
        fibonacci.append(c)
        a+=1; b+=1;
    else :
        break
#홀수 + 짝수 = 홀수, 짝수 + 홀수 = 홀수, 홀수 + 홀수 = 짝수, 홀수 + 짝수 = 홀수.
#이런 순서로 나아가므로 짝수는 1, 4, 7, ... 와 같이 이루어져있다.
b=1; c=0
while(b < len(fibonacci)):
    c+=fibonacci[b]
    b+=3

print(c)

2017/06/26 18:36

KimSeonbin

i,j=1,2
sum = 0

while i<4000000:
    if j % 2 == 0: sum += j
    i, j = j, i+j

print(sum)

2017/06/28 22:15

hammermill

limit=4000000

def fib(n):
    if n<=2:
        return 1
    else:
        return fib(n-1)+fib(n-2)

i=1
s=[]
while fib(i)<=limit:
    if fib(i)%2==0:
        s.append(fib(i))
    i=i+1
print(sum(s))

2017/07/01 17:24

keroro10398

Python으로 간단히 풀어봤습니다. Fibonacci 수열을 생성하는 Generator를 정의하고, max(=4000000)까지의 합을 구했습니다.

def solve(max_val):
    def fib(limit):
        a = [1,1]
        while a[1] < limit:
            yield a[1]
            a.reverse()
            a[1] += a[0]

    return sum(x for x in fib(max_val) if x % 2 == 0)

print(solve(4000000))

2017/07/04 00:26

SOUP

sum = 0
t1, t2 = 1, 2
while t2 < 4000000:
    t1, t2 = t2, t1+t2
    if t1 % 2 == 0:
        sum += t1

print(sum) #4613732

2017/07/06 00:42

Noname

def fib(a = 1, b = 1):
    while b <= 4000000:
        yield b
        a, b = b, a+b

if __name__ == '__main__':
    print(sum(x for x in fib() if x%2 == 0)

파이썬 3.6.1 64

2017/07/11 00:08

Flair Sizz

import java.math.BigInteger;
import java.util.stream.Stream;

public class EvenFibonacciNumbers {

    public static void main(String[] args) {
        System.out.println(
                Stream.iterate(new BigInteger[]{BigInteger.ONE, BigInteger.ONE}, p -> new BigInteger[]{p[1], p[0].add(p[1])})
                .limit(100)
                .filter(p -> p[1].mod(BigInteger.valueOf(2)).compareTo(BigInteger.ZERO) == 0)
                .filter(p -> p[1].compareTo(BigInteger.valueOf(4000000L)) < 0)
                .map(p -> p[1].intValue()).reduce((a, b) -> a + b).get()
        );
    }
}

2017/07/11 10:48

genius.choi

public class Fibonacci {

    public static void main(String[] args){
        /* 
         * 홀 - 홀 - 짝 - 홀 - 홀 - 짝 - 홀 - 홀 - 짝 - 홀 - 홀 - 짝
         * 1    1   2   3    5    8   13  21  34   55  89  144
         * 1, 1, 2로 시작한다고 문제를 변형한다면 3n 번째 마다 짝수가 온다.
         */
        int first = 1;   //첫번째 홀수 
        int second = 1;  //두번쨰 홀수 
        int evenfib=2;   //짝
        int sum=0;       //합

        while(evenfib<=4000000){
            sum+=evenfib;

            first=second+evenfib; //2번째+3번째=4번째
            second=evenfib+first; //3번째+4번째=5번째 
            evenfib=first+second; //4번째+5번째=6번째 
        }
        System.out.println(sum);
    }
}

2017/07/12 00:45

Junseo Lee

def fib(a, b, c=2):
    while c<=4000000:
        yield c
        a, b, c = b+c, b+2*c, 2*b+3*c;

print(sum(i for i in fib(1, 1)))

2017/07/12 01:04

Junseo Lee

fibo = [1,2]
while(1):
   fibo.append(fibo[-1]+fibo[-2])
   if fibo[-1]>4000000:
      fibo.pop()
      print(sum([i for i in fibo if i%2==0]))
      break

2017/07/13 18:29

seulseul

#fibonacci222.py

def fib(n):
    if n==0:return 0
    if n==1:return 1
    return fib(n-2)+fib(n-1)

total=0
x=int(input("숫자 입력:"))   # x값에 4백만을 넣으면 됩니다!
i=0
while fib(i)<=x:
    i = i + 1
    if fib(i)%2==0:
        total=total+fib(i)
    else:continue

print(total)

2017/07/18 00:21

정인준

파이썬 3입니다 피보나치 수열 일반항을 알아서 그냥 넣었어요

from math import sqrt as s

n = 1
res = 0
p = 0
while p < 4000000:
    p = int (( 1 / ( s(5) ) )  * ( ( (1 + s(5) ) /2 ) ** n -  ( ( 1 - s(5) ) /2 ) ** n ))
    n += 1
    if p % 2 == 0:
        res += p

print(res)
res = 0
a = 1
b = 2
while b < 4000000:
    if b % 2 == 0:
        res += b
    a += b
    a, b = b, a

2017/07/19 16:43

이재희

#include <stdio.h>

int main(void) {
    int p = 0, v = 1, tmp, sum = 0;
    while(1) {
        tmp = p + v;
        if(tmp > 4000000) {
            break;
        }
        sum += (tmp % 2 == 0) ? tmp : 0;
        p = v;
        v = tmp;
    }
    printf("%d", sum);
}

답은 4613732 네요

2017/07/20 22:38

Dev Lithium

#include<stdio.h>
#define RAN 4000000

int Fibo(int num){
    if(num==1)
        return 1;
    if(num==2)
        return 2;
    return Fibo(num-1) + Fibo(num-2);
}

int main(void){
    int i;
    int res=0;

    for(i=1; Fibo(i)<RAN; i++)
        if(Fibo(i)%2==0)
            res += Fibo(i);
    printf("%d \n", res);
    return 0;
}

2017/07/21 03:42

뚝빼기뚝은영

a = 1 b = 2 c = 3 sum = 2

print (a)

while c<=4000000: print (b) c = b + a if c%2 == 0 : sum = sum + c

a = b
b = c

print ('================')

print (sum)

2017/07/23 00:27

Dong Ju Jang

# Python 3.6
x, y, sum = 1, 2, 0
while y <= 4000000:
    if not y % 2: sum += y
    x, y = y, x + y
print(sum)    # 4613732

2017/07/23 05:01

최우인

//c로 작성, 피보나치의 짝수 계산
#include <stdio.h>

int main(void)
{
    int a = 1, b = 2, c = 0;
    unsigned int result = 0;

    for (; a <= 4000000;)
    {
        if (a % 2 == 0)
            result += a;

        c = a + b;
        a = b;
        b = c;
    }
    printf("%d\n", result);

    return 0;
}

2017/07/24 00:18

류히

using System;
using System.Collections;
using System.Collections.Generic;


namespace ConsoleApp3
{
    class Program
    {
        static void Main(string[] args)
        {
            List<int> numbers = new List<int>();
            int sum = 0;

            numbers.Add(1);
            numbers.Add(2);

            int count = 0;
            while (true)
            {
                sum = numbers[count] + numbers[count + 1];
                if (sum > 4000000) { break; }
                numbers.Add(sum);
                count++;
            }

            for (int i = 0; i <= count + 1; i++)
            {
                Console.Write(numbers[i] + " ");
            }

            sum = 0;
            for (int i = 0; i <= count + 1; i++)
            {
                if ((numbers[i] % 2).Equals(0))
                {
                    sum += numbers[i];
                }
            }

            Console.WriteLine(sum);
        }
    }
}

2017/07/24 06:40

Taehyeon AN

public class Ex9 {
    private final static int MAX = 4000000;
    public static void main(String[] args) {
        int n = 1;
        int m = 2;
        int tmp = 0;
        int sum = m;

        while ( n + m <= MAX ){
            if ( ( n + m ) % 2 == 0 ){
                sum += n + m;
            }
            tmp = m;
            m = n + m;
            n = tmp;
        }
        System.out.println(sum);
    }
}

2017/07/24 14:23

요지

import numpy as np

Fibonacci_under_4M = [1,2]

num = np.sum(Fibonacci_under_4M[-2:])
while num < 4000000:
    Fibonacci_under_4M.append(num)
    num = np.sum(Fibonacci_under_4M[-2:])

Fib_even = []
for i in Fibonacci_under_4M:
    if i % 2 == 0:
        Fib_even.append(i)
    else :
        continue

print(np.sum(Fib_even))

2017/07/24 23:07

김도영

numbers = [1, 2]
result = 0
while True :
    result = numbers[len(numbers)-2] + numbers[len(numbers)-1]
    if result > 4000000 :
        break
    numbers.append(result)
print(numbers)

final = 0
for i in numbers :
    if i % 2 == 0 :
        #n = numbers.pop(numbers.index(i))
        final += i
print(final)

2017/07/26 22:38

다크엔젤

public class evenFibonaccinumBers {
    public static void main(String[] args) {
        int fibonacci1=1, fibonacci2=2, fibonacci3; 
        int sum = 2;
        for(int i=0; ;i++) {
            fibonacci3 = fibonacci1 + fibonacci2;
            if(fibonacci3 > 4000000) {
                break;
            }
            if((fibonacci3%2) == 0) {
                sum += fibonacci3;
            }
            fibonacci1 = fibonacci2;
            fibonacci2 = fibonacci3;
        }
        System.out.println(sum);
    }
}

2017/07/27 21:48

곽철이

```{.java} public class Main {

public static void main(String[] args) {
    int a = 1;
    int b = 2;
    int sum = 0;
    int total = 2;
    int max = 4000000;

    while (sum <= max) {
        sum = a + b;
        a = b;
        b = sum;
        if (sum % 2 == 0) {
            total += sum;
        }
    }
    System.out.println(total);
}

} 답: 4613732

2017/07/28 10:38

jinhak Kim

Python으로 작성했습니다.

def EvenFibonacci(num):
    temp = [0, 1]
    ans, result, idx = 0, 0, 0
    while result < num:
        result = temp[idx] + temp[idx + 1]
        temp.append(result)
        if result % 2 == 0:
            ans = ans + result
        idx+=1
    print(ans)

EvenFibonacci(4000000)

2017/08/01 14:08

arloe

R로 작성했습니다.

EvenFibonacci <- function(num){
  num = 4000000
  temp <- c(0, 1)
  idx <- 1
  ans <- result <- 0
  while(result < num){
    result <- temp[idx] + temp[idx + 1]
    temp[idx + 2] <- result
    idx <- idx + 1
    if(result %% 2 == 0) ans = ans + result
  }
  return(ans)
}
EvenFibonacci(4000000)

2017/08/01 14:15

arloe

R로 작성했습니다.

x <- c(1,2)
for(i in 2:1000) {
  x[i+1]<-x[i-1]+x[i]
}
sum(x[x<4000000 & (x%%2)==0])

2017/08/01 16:45

임승남

Java 코드로 작성

public class Even_Fibonacci_Numbers2 {

    public static void main(String[] args) {
        int sum = 0; //피보나치 수 중 짝수값 합계 저장
        int idx = 0;
        int evenIdx = 0;

        int num1 = 1; //피보나치 앞쪽 수
        System.out.println("피보나치 수(" + ++idx + "번째): " + num1);
        if (num1 % 2 == 0) { //짝수여부 확인
            sum += num1;
            System.out.println("400만 이하의 피보나치 수열 값 중 짝수 값(" + ++evenIdx + "번째): " + num1);
            System.out.println("400만 이하의 피보나치 수열 값 중 짝수 값 합계: " + sum);
        }

        int num2 = 2; //피보나치 뒷쪽 수
        System.out.println("피보나치 수(" + ++idx + "번째): " + num2);
        if (num2 % 2 == 0) { //짝수여부 확인
            sum += num2;
            System.out.println("400만 이하의 피보나치 수열 값 중 짝수 값(" + ++evenIdx + "번째): " + num2);
            System.out.println("400만 이하의 피보나치 수열 값 중 짝수 값 합계: " + sum);
        }

        int num3 = num1 + num2; //새로운 피보나치 수 : 앞쪽 수 + 뒷쪽 수
        System.out.println("피보나치 수(" + ++idx + "번째): " + num3);
        if (num3 % 2 == 0) { //짝수여부 확인
            sum += num3;
            System.out.println("400만 이하의 피보나치 수열 값 중 짝수 값(" + ++evenIdx + "번째): " + num3);
            System.out.println("400만 이하의 피보나치 수열 값 중 짝수 값 합계: " + sum);
        }

        while (true) {
            num1 = num2;
            num2 = num3;
            num3 = num1 + num2;

            if (num3 > 4000000) {
                System.out.println(">>> 400만을 넘는 첫번째 피보나치 수(" + ++idx + "번째): " + num3);
                break; //피보나치 수가 400만을 넘으면 반복 종료
            }
            System.out.println("피보나치 수(" + ++idx + "번째): " + num3); //피보나치 수열 출력

            if (num3 % 2 == 0) { //짝수여부 확인
                sum += num3;
                System.out.println("400만 이하의 피보나치 수열 값 중 짝수 값(" + ++evenIdx + "번째): " + num3);
                System.out.println("400만 이하의 피보나치 수열 값 중 짝수 값 합계: " + sum);
            }
        }
        System.out.println("-------------------------------------------------");
        System.out.println("400만 이하의 피보나치 수열 값 중 짝수 합계(최종): " + sum);
    }
}
/*  실행결과
피보나치 수(1번째): 1
피보나치 수(2번째): 2
400만 이하의 피보나치 수열 값 중 짝수 값(1번째): 2
400만 이하의 피보나치 수열 값 중 짝수 값 합계: 2
피보나치 수(3번째): 3
피보나치 수(4번째): 5
피보나치 수(5번째): 8
400만 이하의 피보나치 수열 값 중 짝수 값(2번째): 8
400만 이하의 피보나치 수열 값 중 짝수 값 합계: 10
피보나치 수(6번째): 13
피보나치 수(7번째): 21
피보나치 수(8번째): 34
400만 이하의 피보나치 수열 값 중 짝수 값(3번째): 34
400만 이하의 피보나치 수열 값 중 짝수 값 합계: 44
피보나치 수(9번째): 55
피보나치 수(10번째): 89
피보나치 수(11번째): 144
400만 이하의 피보나치 수열 값 중 짝수 값(4번째): 144
400만 이하의 피보나치 수열 값 중 짝수 값 합계: 188
피보나치 수(12번째): 233
피보나치 수(13번째): 377
피보나치 수(14번째): 610
400만 이하의 피보나치 수열 값 중 짝수 값(5번째): 610
400만 이하의 피보나치 수열 값 중 짝수 값 합계: 798
피보나치 수(15번째): 987
피보나치 수(16번째): 1597
피보나치 수(17번째): 2584
400만 이하의 피보나치 수열 값 중 짝수 값(6번째): 2584
400만 이하의 피보나치 수열 값 중 짝수 값 합계: 3382
피보나치 수(18번째): 4181
피보나치 수(19번째): 6765
피보나치 수(20번째): 10946
400만 이하의 피보나치 수열 값 중 짝수 값(7번째): 10946
400만 이하의 피보나치 수열 값 중 짝수 값 합계: 14328
피보나치 수(21번째): 17711
피보나치 수(22번째): 28657
피보나치 수(23번째): 46368
400만 이하의 피보나치 수열 값 중 짝수 값(8번째): 46368
400만 이하의 피보나치 수열 값 중 짝수 값 합계: 60696
피보나치 수(24번째): 75025
피보나치 수(25번째): 121393
피보나치 수(26번째): 196418
400만 이하의 피보나치 수열 값 중 짝수 값(9번째): 196418
400만 이하의 피보나치 수열 값 중 짝수 값 합계: 257114
피보나치 수(27번째): 317811
피보나치 수(28번째): 514229
피보나치 수(29번째): 832040
400만 이하의 피보나치 수열 값 중 짝수 값(10번째): 832040
400만 이하의 피보나치 수열 값 중 짝수 값 합계: 1089154
피보나치 수(30번째): 1346269
피보나치 수(31번째): 2178309
피보나치 수(32번째): 3524578
400만 이하의 피보나치 수열 값 중 짝수 값(11번째): 3524578
400만 이하의 피보나치 수열 값 중 짝수 값 합계: 4613732
>>> 400만을 넘는 첫번째 피보나치 수(33번째): 5702887
-------------------------------------------------
400만 이하의 피보나치 수열 값 중 짝수 합계(최종): 4613732
*/

2017/08/01 17:55

nowdoit

import numpy as np

Fibo = [1,2]
ans = [2]
f = 0

if __name__=="__main__":

    while f < 4000000:
        k = len(Fibo)
        f = Fibo[k-2] + Fibo[k-1]
        Fibo.append(f)
        if f % 2 == 0:
            ans.append(f)
    print(np.sum(ans))



2017/08/01 18:50

이현우

public static void fibo(){
         ArrayList<Integer> list = new ArrayList<>();

         list.add(1);
         list.add(2);

         for(int i =1; ; i++){
             list.add(list.get(i-1) + list.get(i));

             if(list.get(i-1) + list.get(i) > 4000000)
                 break;
         }


        list.remove(list.get(list.size()-1));
        int sum = 0;

        for(int  i = 0; i < list.size(); i++){
            if(list.get(i) % 2 == 0 ){
                sum +=list.get(i);
            }
        }
        System.out.println(sum);


    }

2017/08/01 22:40

Geon Woo Park

bool isEven(int num) { return num % 2 == 0 ? true : false; }

bool isOverFlow(int num, int limit)
{
    return num > limit ? true : false;
}

int GetMySum(int num1, int num2, int limit)
{
    int sum = 0;
    int target;

    if (num1 > num2)
    {
        int temp = num1;
        num1 = num2;
        num2 = temp;
    }

    if (isOverFlow(num1, limit) == false)
    {
        if (isEven(num1)) sum += num1;
        if (isOverFlow(num2, limit) == false)
        {
            if (isEven(num2))
            {
                if (sum == 0)
                {
                    sum += num2;

                    while (true)
                    {
                        target = num1 + num2;
                        if (target == 0) break; // 예를들어 -1, 1이 오면 0으로 무한루프 돈다.
                        if (isOverFlow(target, limit)) break;
                        if (isEven(target)) sum += target;
                        num1 = num2;
                        num2 = target;
                    }
                }
                else
                {
                    //sum = -1; // infinity. // num1&2가 둘다 짝수인 경우.
                }
            }
        }
    }

    return sum;
}

2017/08/02 13:53

jipsa jipsa

def fibonacci(n):

    a, b = 0, 1
    result = []

    while b <= n:
        a, b = b, a+b
        result.append(a)

    return result

print(sum([num for num in fibonacci(4000000) if num % 2 == 0]))
실행결과
4613732

파이썬으로 간단하게 피보나치 수열을 리턴하는 함수를 작성한 뒤, 지능형 리스트로 짝수만 남겼습니다.

2017/08/03 14:16

Envil_Saintan

C

#include <stdio.h>

int main(int argc,char* argv[])
{
    int a = 1, b = 1;
    int result=0;
    int tmp=1;
    while(tmp<4000000)
    {
        tmp = a + b;
        a = b;
        b = tmp;

        if(tmp%2==0)
            result = result + tmp;
    }
    printf("%d",result);

    return 0;
}

2017/08/09 11:26

임꺽정

a,b=1,2
c=a+b
sum=b

while(c<=4000000):
    a,b=b,a+b
    c=a+b
    if(c%2==0):
        sum +=c
print (sum)

2017/08/20 18:45

정인준

import java.io.IOException;

public class Main {
    public static void main(String[] args) throws IOException {
        System.out.println(fibo());
    }
    public static int fibo() {
        int [] fiboArr = new int[100];
        int sum = 0;
        fiboArr[0] = 1; 
        fiboArr[1] = 1;
        int i=2;
        while (true) {
            fiboArr[i] = fiboArr[i-1] + fiboArr[i-2];
            if (fiboArr[i] % 2 == 0) {
                sum += fiboArr[i];
            }
            if (fiboArr[i] > 4000000) {
                break;
            }
            i++;
        }
        return sum;
    }
}

처음에 재귀함수로 해보려고 했는데, 피보나치수가 50을 넘어가면 속도가 현저히 느려져서 배열을 이용한 피보나치로 구현하였습니다. 값은 4613732

2017/08/22 15:21

임주성

파이썬으로 작성

prev, curr, fib_num  = 0, 1, 1

fib_num_list = []
sum = 0
while fib_num <= 4000000 :
    fib_num = prev + curr
    prev = curr
    curr = fib_num
    if fib_num % 2 == 0 : sum += fib_num

print(sum)

2017/08/24 16:20

김동환

JAVA

public static void main(String[] args) {
        ArrayList<Integer> fibonacciList = new ArrayList<Integer>();
        ArrayList<Integer> evenList = new ArrayList<Integer>();

        int maxNum = 4000000;
        int curNum = 0;
        int lastNum = 0;
        int start = 2;
        int len = 0;
        int sum = 0;

        fibonacciList.add(1);
        fibonacciList.add(2);

        for(int i = start; ; i++) {
            curNum = fibonacciList.get(i - 2) + fibonacciList.get(i - 1);

            if(curNum > maxNum) {
                break;
            }

            fibonacciList.add(curNum);
        }

        len = fibonacciList.size();

        for(int i = 0; i < len; i++) {
            curNum = fibonacciList.get(i);

            if(curNum % 2 == 0) {
                evenList.add(curNum);
                sum += curNum;
            }
        }

        System.out.println("수열: " + fibonacciList);
        System.out.println("짝수열: " + evenList);
        System.out.println("합계: " + sum);
    }

2017/08/25 15:36

androot

def f(cnt):
    i = 0
    arr = [1, 2]
    while True:
        i += 1
        if arr[i] + arr[i - 1] >= cnt:
            break
        arr.append(arr[i] + arr[i - 1])
    print(sum([x for x in arr if x%2 == 0]))

f(4000000)

2017/08/25 16:42

piko

import java.util.HashMap;

public class Example134 {

    private static HashMap<Integer, Integer> map = new HashMap<>();

    public static void main(String[] args) {
        Example134 ex = new Example134();

        int n = 1;
        long sum = 0;

        while (true) {
            int num = ex.fibonacci(n);

            if (num > 4000000)
                break;

            if (num % 2 == 0)
                sum += num;

            map.put(n, num);
            n++;
        }

        System.out.println(sum);
    }

    private int fibonacci(int n) {
        if (n <= 1) {
            return n;
        } else {
            if (map.containsKey(n)) {
                return map.get(n);
            } else {
                return fibonacci(n - 2) + fibonacci(n - 1);
            }
        }
    }
}


피보나치 수열 방식으로 중복연산은 map을 이용해서 풀어 보았습니다.

2017/08/30 14:08

흑돼지

# python 3.6
def fibo(n):
    x = 1
    y = 2
    ret = list()
    while x <= n:
        ret.append(x)
        x, y = y, x + y
    return ret


print(sum([i for i in fibo(4 * (10**6)) if i % 2 == 0]))
# ans: 4613732

2017/09/05 12:22

mohenjo

package ExampleMatterTest;

public class Even_Fibonacci_Numbers {
    public static void main(String args[]) {
        int fn = 1; int sn = 2; int tn = 3;
        // fn = firstNum // sn = secondNum // tn = thirdNum
        int sumNum = 2;
        boolean run = true;

        while(run) {
            //firstNum이 가장 작은 경우 
            if(fn < sn && fn < tn) {
                fn = (sn + tn);
                if(fn % 2 == 0 && fn <= 4000000) {
                    sumNum += fn;
                }
            }

            //secondNum이 가장 작은 경우
            if(sn < fn && sn < tn) {
                sn = (fn + tn);
                if(sn % 2 == 0 && sn <= 4000000) {
                    sumNum += sn;
                }
            }

            //thirdNum이 가장 작은 경우
            if(tn < sn && tn < fn) {
                tn = (sn + fn);
                if(tn % 2 == 0 && tn <= 4000000) {
                    sumNum += tn;
                }
            }

            //400만 검사
            if(fn > 4000000 || sn > 4000000 || tn > 4000000) {
                run = false;
            }
        }
        System.out.println("Result : " +sumNum);
    }
}

2017/09/07 22:53

SungWook Jung

#include <iostream>

using namespace std;

int fib(int a, int b)
{
    return a + b;
}

int main()
{
    int a = 1, b = 2;
    int temp;
    int sum=0;
    for ( ; b<=4000000 ; )
    {
        if (b % 2 == 0)
        {
            sum += b;
        }
        temp = b;
        b=fib(a, b);
        a = temp;
    }
    cout << sum;
}

2017/09/19 17:11

노명환

// JAVA // RESULT : 4613732

import java.util.Arrays;

public class GetPibonacci {
    public static void main(String[] args) {
        int[] array = new int[1000]; array[0] = 0; array[1] = 1;
        int firstSlot = 0; int secondSlot = 1; int slot = 2; int sum = 0;
        while(array[firstSlot] +array[secondSlot] <= 4000000) {
            array[slot] = (array[firstSlot] +array[secondSlot]);
            slot++; firstSlot++; secondSlot++;
        }
        for(int a = 0; a < slot; a++) {
            if(array[a] % 2 == 0) {
                sum += array[a];
            }
        }
        System.out.println(sum);
    }
}

2017/10/25 04:07

SungWook Jung

# 한글 처리 in Atom 1.21.1 + Anaconda(Python 3.6.3)
import sys
import io

sys.stdout = io.TextIOWrapper(sys.stdout.detach(), encoding='utf-8')
sys.stderr = io.TextIOWrapper(sys.stderr.detach(), encoding='utf-8')

# 피보나치 수열의 각 항은 바로 앞의 항 두 개를 더한 것이 됩니다.
# 1과 2로 시작하는 경우 이 수열은 아래와 같습니다.
# 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, ...
# 짝수이면서 4백만 이하인 모든 항을 더하면 얼마가 됩니까?

pibonacci = [1, 2]
while pibonacci[-2] + pibonacci[-1] <= 4000000:
    pibonacci.append(pibonacci[-2] + pibonacci[-1])

pibonacci_even = [pibonacci[i] for i in range(len(pibonacci)) if pibonacci[i] % 2]

print("짝수 피보나치 수열", pibonacci_even, "의 합은", sum(pibonacci_even))

2017/11/02 23:26

Jace Alan

res = 0
fn, fn_1 = 1, 0

while fn <= 4000000:
    fn, fn_1 = fn + fn_1, fn
    res = res + fn if not fn % 2 else res

print(res)

2017/11/09 16:09

songci

python 2.7

def fibo(x):

    fibo = [1,2]     # 우선 1,2로 시작하는 피보나치 수열을 만듭니다

    while fibo[-1] + fibo[-2] < x:    # 입력값 (여기서는 400만) 미만까지의 피보나치 수열을 생성합니다
        fibo.append(fibo[-1] + fibo[-2])

    sum_no = sum(i for i in fibo if i % 2 == 0)    # 피보나치 수열에서 짝수만을 더합니다

    return sum_no

print (fibo(4000000))

2017/11/23 19:36

vkospi

python

F =[1, 2]
i = 0
while True:
    F += [F[i]+F[i+1]]
    if F[i+2] > 4000000: break
    i += 1

print(sum([x for x in F if not x%2]))

2017/11/28 13:02

이택성

def Fibonacci(a, b, n, count=2):
    if n==1: return(a)
    elif n==2: return(b)
    count+=1
    if count!=n:
        return(Fibonacci(b, a+b, n, count))
    else:
        return(a+b)

n=1
A=[]
while Fibonacci(1, 2, n)<=4e6:
    A.append(Fibonacci(1, 2, n))
    n+=1

print(sum([x for x in A if not x%2]))

2017/12/13 04:41

빗나감

#!/usr/bin/env python

prev, after=[0, 1]
sum=0

while after < 4000000:
    prev= prev + after
    prev, after = after, prev
    if after % 2 == 0:
        sum += after
print sum

2017/12/14 17:53

윤병호

a , b = [0,1]
total = 0

while b <= 4000000 :
    a = a + b
    b,a = a,b
    if b % 2 == 0 : total += b

print(total)

2017/12/20 16:17

ekfrqkf

#include <stdio.h>

void main() {
    int result = 0;
    int arr[50] = { 0, 1 };
    int i = 2;
    while (1) {
        arr[i] = arr[i - 1] + arr[i - 2];
        if (arr[i] > 4e+6)
            break;
        if (arr[i] % 2 == 0)
            result += arr[i];
        i++;
    }
    printf("%d\n", result);
}

2017/12/22 21:50

ccs

lst = [1,2]
while (lst[-1]+lst[-2])<4000000 :
    lst.append(lst[-1]+lst[-2])
print(sum(x for x in lst if x%2==0 ))

2017/12/28 14:32

얏홍

파이썬 3.6

def fibonaccinum(x):
    fnum = 0
    fnumtotal = 0
    fnumlist =[]
    for i in range(1,x+1):
        if i < 3:
            fnumlist.append(i)
            if i % 2 == 0:
                fnumtotal += i
        else:
            fnum = fnumlist[i-3] + fnumlist[i-2]
        if fnum > x:
            break
        if fnum != 0:
            fnumlist.append(fnum)
        if fnum !=0 and fnum % 2 == 0:
            fnumtotal += fnum
    print("\n",">>> %d 이하의 피보나치 수열:" % x,"\n",fnumlist, "\n")
    print(" >>> 짝수들의 합 : %d" % fnumtotal,"\n")

print("\n")
num = int(input(" ▶ 범위값을 자연수로 입력하세요: " ))

fibonaccinum(num)
  • 결과값
 ▶ 범위값을 자연수로 입력하세요: 4000000

 >>> 4000000 이하의 피보나치 수열: 
 [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] 

 >>> 짝수들의 합 : 4613732

2017/12/29 15:26

justbegin

a1= int(input("첫번째 항을 입력하세요"))
a2= int(input("두번째 항을 입력하세요"))
l = int(input("숫자를 입력하세요"))
t = [a1,a2]
r = a1+a2
x = t[0] + t[1]
while x <= l:
       x = t[0] + t[1]
       t.append(x)
       del t[0]
       if x <= l:
              if x%2 == 0:
                     r += x
print(r)


2018/01/09 19:08

김영성

l = [2, 8]
i = 1
while l[i] < 4000000:
    a = 4*l[i] + l[i-1]
    l.append(a)
    i += 1
for i in l:
    if i > 4000000:
        l.pop()
print(sum(l))

2018/01/22 17:16

715

a = 1
while a == 1:
     a = 1 + 1
     if a == 4000000:
        break
     print(a)

단순하게 while 루프를 활용해 봤습니다.

2018/01/31 00:08

sibal

n = int(input("범위 : "))
def evenfibonacci(number):
    a = [1,1]
    b = number
    c = []
    for i in range(0,10000):
        a.append(a[i]+a[i+1])
        if a[i+2]+a[i+1] > b:
            break
    for j in a:
        if j%2 == 0:
            c.append(j)
    return sum(c)


print(evenfibonacci(n))

2018/02/04 12:08

김동하

def a(n):
    if n<3:return n
    else:return a(n-1)+a(n-2)
result=0
n=0
while a(3*n+2)<=4000000:  #3n+2항에서만 짝수라는 것을 찾은 것.
    result+=a(3*n+2)
    n+=1
print(result)
def a(n):
    if n<3:return n
    else:return a(n-1)+a(n-2)
result=0
n=0
while a(n)<=4000000:
    n+=1
    if a(n)%2!=0:continue    #수학적 특성을 모르는 경우. 위 보다 느리다.
    result+=a(n)
print(result)

2018/02/09 07:07

추천은 다 읽음

def evenf():
    fibo=[1,2]
    evenfibo=[]

    n=input('number:')

    i=0
    while fibo[i]+fibo[i+1]<n:
        fibo.append(fibo[i]+fibo[i+1])
        i +=1
    #print fibo

    for i in fibo:
        if i%2==0:
            evenfibo.append(i)
    #print evenfibo

    print sum(evenfibo)

answer: 4613732

2018/02/14 15:42

Da ne

fibonacci_list=[1,2,3]
a=1
b=2
c=3
while True:
    a=b
    b=c
    c=a+b
    if c>4000000:
        break
    fibonacci_list.append(c)

ans_sum=0
for g in fibonacci_list:
    if g%2==0:
        ans_sum+=g

print(ans_sum)




2018/02/17 00:14

D B

public class fibonacci {
    List<Integer> list = new ArrayList<Integer>();
    int endNumber;
    int firstNumber;
    int secondNumber;
    int sum;

    public fibonacci(int endNumber) {
        this.firstNumber = 1;
        this.secondNumber = 2;
        this.endNumber = endNumber;
    }

    public boolean fibonacciMake() {
        list.add(firstNumber);
        list.add(secondNumber);
        int length = list.size();
        while((list.get(length-1) + list.get(length-2)) < endNumber){
            list.add(list.get(length-1)+list.get(length-2));
            length = list.size();
        }

        return true;
    }

    public int fibonacciSum() {
        int length = list.size();
        for(int i = 0; i < length; i++) {
            if((list.get(i) % 2) == 0) {
                sum += list.get(i);
            }
        }
        return sum;
    }

}

4000000보다 작은 피보나치수열의 짝수의 합은 :4613732입니다

2018/02/23 17:11

초초보

from pandas import Series
def fibbonacci(n):
    fib = Series([])
    fib[0] = 1; fib[1] = 2
    for i in range(2,n):
        fib[i] = fib[i-1] + fib[i-2]
        if fib[i] > n:
            break
    return fib[:-1]

N = 4*10**6
sum(fibbonacci(N)[fibbonacci(N)%2==0])

2018/02/26 15:51

맹재환

def sum_fibonacci(n):
    fibonacci = [1, 2]
    even = [2]
    while fibonacci[-1] < n:
        fibonacci.append(fibonacci[-1] + fibonacci[-2])
        if fibonacci[-1]%2 == 0:
            even.append(fibonacci[-1])
    if fibonacci[-1] == even[-1]:
        del even[-1]
    return sum(even)
print(sum_fibonacci(4000000))

Python 3

2018/03/11 21:17

myyh2357

import numpy as np

def fiboMat(n):
    f = np.array([[1,1],[1,0]])  # fibo matrix
    if n in [-1,0]:
        return f
    elif n > 0:
        res = np.dot(f,fiboMat(n-1))
        return res

n = 0
while fiboMat(n)[0,0] < 4000000:
    n += 1
print(n-1)
# 400만 이하일 n 값은 31

total = 0
for i in range(1,32,3):  # 수열의 패턴 : 짝수+홀수 = 홀수, 홀수+홀수 = 짝수 활용
    x = fiboMat(i)[0,0]
    total += x
total
# 4613732

2018/03/13 15:09

TAE_HYO KIM

수열을 보시면 1(홀수) 2(짝수) 3(홀수) 5(홀수) 8(짝수) ... 이러한 패턴이 나오는 이유는 "짝+홀 = 홀", "홀 + 홀 = 짝" 이기 때문에 저는 2로 나눈 나머지가 0이 되는 논리를 불필요하게 할 필요 없이 짝수인 수만 뽑아서도 같은 결과를 얻었습니다. 그리고 저는 피보나치 수열을 구할 때 효율을 높이기 위해 매트릭스를 활용해서 구했습니다.^^ - TAE_HYO KIM, 2018/03/13 15:13
def fibonacci_numbers():
    pass
    numbers = [0, 1]
    index = 0

    fibo_sum = 0

    while(1):
        numbers.append(numbers[index] + numbers[index+1])
        index += 1

        if 4000000 <= numbers[-1]:
            break
        if 0 == numbers[-1] % 2:
            #print(numbers[-1])
            fibo_sum += numbers[-1]

    print("fibo : %d" % (fibo_sum))


def main():
    pass
    fibonacci_numbers()

main()

2018/03/15 10:11

이승훈

python3

import itertools

def fib():
    '피보나치 수열 무한 제너레이터'
    a, b = 1, 2
    yield a
    yield b
    while 1:
        c = a + b
        yield c
        a, b = b, c

print(sum(n for n in itertools.takewhile(lambda x: x < 4000000, fib()) if n % 2 == 0))

2018/03/18 10:33

디디

Swift입니다.

import Foundation

// Get Fibonacci series 
func getFibonacciSeries() -> [Int] {
    var series = [1,2]
    while true {
        let newNumber = series[series.count - 2] + series[series.count - 1];
        if newNumber > 4_000_000 {
            break;
        }
        series.append(newNumber)
    }
    return series;
}

var fibonacciSeries = getFibonacciSeries()
print(fibonacciSeries)
print(fibonacciSeries.filter { $0 % 2 == 0}.reduce(0, +))

2018/03/18 12:20

졸린하마

a, b = 0,1
sum = 0
while b <= 4000000:
    a,b = b,a+b
    if b % 2 == 0: 
        sum += b
print(sum)

2018/03/19 14:20

DEMIAN

def fib(num) :
    a = 1
    b = 2
    sum = 0
    while b <= num :
        a,b = b,a+b
        if a % 2 == 0 :
            sum += a
    else : return sum

print(fib(4000000))

2018/03/20 18:05

yijeong

list_ = [1,2]
while list_[-1] < 4000000:
    list_.append(list_[-2] + list_[-1])
print(sum([i for i in list_ if i % 2 == 0]))

2018/03/27 11:21

익셉션메이커

from functools import reduce

numbers = [1, 2]
i = 0
while True:
    result = numbers[i] + numbers[i+1]
    if result >= 4000000:
        break
    i = i + 1

    numbers.append(result)

sum_result = reduce(lambda x, y: x + y, filter(lambda x: x % 2 == 0, numbers))
print(sum_result)

2018/04/02 18:29

무명소졸

public class EFn{
 public static void main(String[] args){
  System.out.println("답은 ");
  int input = 4000000;

  int a,b,c,i, sum = 0;

  a = 0 ;
  b = 1 ;
  c = a + b;

  while(c <= input){
   a = b;
   b = c;
   c = a + b;

   if(c%2 == 0)
    sum += c;
   }
 System.out.println(sum);
 }
}

2018/04/05 22:09

배혜민

#include<iostream>
#include<vector>
#define MAX 4000000
using namespace std;

int main()
{
    vector<int> v;

    v.push_back(1), v.push_back(2);
    int sum = 0, even_number = 0;
    int i = 0, j = 1;

    while (sum <= MAX)
    {
        sum=v[i] + v[j];
        v.push_back(sum);
        i++;
        j++;
    }
    for (int i = 0; i < v.size(); i++)
    {
        if (v[i]%2 == 0)
        {
            even_number += v[i];
        }
    }
    cout << even_number << ' ';
}

2018/04/18 17:33

Jun ki Kim

  public static void main(String[] args) {
        ArrayList<Integer> list = new ArrayList<>();
        list.add(1);
        list.add(2);
        for(int i=1;;i++){//피보나치 수열을 list에 저장 list에 들어간 값이 400만을 넘으면 멈춤
            list.add(list.get(i-1)+list.get(i));
            if(list.get(i-1)+list.get(i)>4000000)
                break;
        }

        list.remove(list.get(list.size()-1));//list에 마지막 인덱스 값을 제거(400만 넘으니깐)
        int sum=0;
        for(int i=0;i<list.size();i++){//짝수인 총합
            if(list.get(i)%2==0)
                sum+=list.get(i);
        }
        System.out.println(sum);


    }

2018/04/30 15:11

聂金鹏

    static long f(int num) {
        long f1 = 0;
        long f2 = 1;
        long f = 0;
        for (int i=1; i<num; i++) { 
            f = f2 + f1;
            f2 = f1;
            f1 = f;
        }
        return f;
    }

    public static void main(String[] args) throws Exception {
        long sum = 0;
        int i = 3;
        while (f(i) <= 4000000) {
            if (f(i)%2 == 0)
                sum += f(i);
            i++;
        }
        System.out.println(sum);
    } // 자바

2018/05/07 10:43

정몽준

F=[1,1]
k=0
t=2

while t<=4000000:
    F.append(t)
    t=F[k]+F[k+1]
    k+=1

print(sum(F))

2018/05/08 20:01

나영연

let arr = [1,2];

for(let i = 0; i<100; i++) {
  arr[i+2] = arr[i+1] +arr[i];
}
let arr2= [];
for(let e =0; e<  100  ; e++) {
  if(arr[e]%2 ==0 && arr[e] < 4000000) {
    arr2.push(arr[e]);
  }
}

let sum = arr2.reduce((a,b) => a+b);

2018/05/23 21:25

채상엽

def fibo():

    a = 1
    b = 2
    s = 0

    while a < 4000001:

        a, b = b, a + b
        if a % 2 == 0:
            print("fibonacci value : %d" % a)
            s += a

    print("sum of fibonacci value above : %d" % s)

### Test
fibo()
fibonacci value : 2
fibonacci value : 8
fibonacci value : 34
fibonacci value : 144
fibonacci value : 610
fibonacci value : 2584
fibonacci value : 10946
fibonacci value : 46368
fibonacci value : 196418
fibonacci value : 832040
fibonacci value : 3524578
sum of fibonacci value above : 4613732

2018/05/24 14:09

Gerrad kim

x = 0
y = 1
res = 0
while y <= 4000000:
    x = x+y
    y,x = x,y
    if y%2 == 0:
        res += y
print(res)

2018/05/28 10:02

bnewkk

def fibo(N, a=[1,2], b=3):
    while(b <= N): _, b = a.append(b), a[-1] + a[-2]
    return a

print(sum(i for i in fibo(4000000) if i%2 == 0))

2018/05/30 17:21

재즐보프

Python

a = 0
b = 1
n = 4000000
ans = 0
while True:
    next = a + b
    if next > n:
        break
    if next%2 == 0:
        ans += next
    a, b = b, next
print(ans)

2018/05/31 15:35

Taesoo Kim

public static void main(String[] args) {
    int a = 1;
    int b = 2;
    int sum = 0;
    int total = 2;
    int max = 4000000;

    while (sum <= max) {
        sum = a + b;
        a = b;
        b = sum;
        if (sum % 2 == 0) {
            total += sum;
        }
    }
    System.out.println(total);
}

2018/06/04 16:47

배혁남

fibonacci = [1, 2]
sum = 0

for i in range(1, 1000):
    fibonacci.append(int(fibonacci[i-1]) + int(fibonacci[i]))

for j in fibonacci:
    if j % 2 == 0 and j <= 4000000:
        sum += j

print(sum)

2018/06/06 21:05

meteor

Python 3.6

f1 = 1
f2 = 2
result = 2
while 1:
    f1 = f1+f2
    f1, f2 = f2, f1
    if f2 > 4000000: break          # 중복 검사를 피하기 위해
    elif not f2%2: result += f2     # while에 조건식을 쓰지 않고 break를 이용
print(result)

2018/06/24 08:04

Creator

Fibonacci_Table = [0, 1]

last_index = 1
while Fibonacci_Table[last_index] <= 4000000:
    last_index += 1
    Fibonacci_Table.append(Fibonacci_Table[last_index-1] + Fibonacci_Table[last_index-2])

sum_result = 0
for value in Fibonacci_Table:
    if value % 2 == 0:
        sum_result += value

print(sum_result)

2018/06/26 13:22

Hand

package com.company;

public class Main {

    public static void main(String[] args) {
        int i = 1, j = 2;
        int sum = 2;
        int temp = 0;
        int count = 0;
        while(j <= 4000000)
        {
            if((i + j) % 2 == 0)
            {
                sum += i + j;
            }
            temp = i;
            i = j;
            j = temp + j;
            count++;
        }
        System.out.println(sum + " " + count);
    }
}

2018/07/09 16:05

이동수

def fibo( n ):
    if n in (1,2):
        return n
    return fibo(n-1) + fibo(n-2)

sumv = 0
n = 1

while 1:
    f = fibo(n)
    if f > 4000000: break
    n += 1
    if f % 2 == 0:
        sumv += f

print(sumv)

2018/07/16 07:45

구름과비

c언어
#include<stdio.h>

int main()
{
    int len,i =0;
    int sum = 0;
    int arr[40]= {1,2,0 };

    while(1)
    {
        arr[i+2] = arr[i] + arr[i+1];
        i++;

        if(arr[i]>=4000000)
        {
            len = i;
            break;
        }
    }


    for(i=0; i<len; i++)
    {
        if(arr[i]%2 ==0)
        {
            sum += arr[i];
        }

        printf(" %d  ", arr[i]);
    }

    printf("\nsum = %d  ", sum);

}

2018/08/07 15:34

이우경

package textpack; public class testaaaaa { public static void main (String [] args) { int sum = 0 , a = 1, b = 1, c;

    while (a <= 4000000 ) {
        System.out.println("현재 a = " + a);
        if(a % 2 == 0)
            sum += a;
        c = a + b;  a = b;  b = c;
        System.out.println(sum);}

} } // 답 4613732

2018/08/13 16:24

Minho Chu

    class Program
    {
        static void Main(string[] args)
        {
            ShowPivo();
        }
        public static int Pivo(int n)
        {
            if (n == 1 || n == 2)
                return 1;
            else
            {
                return Pivo(n - 1) + Pivo(n - 2);
            }
        }
        public static void ShowPivo()
        {
            int nPivoSum = 0;
            for (int i = 1; i < 40; i++)
            {
                if (nPivoSum > 4000000)
                    break;

                if (Pivo(i) % 2 == 0)
                    nPivoSum += Pivo(i);
            }
            Console.WriteLine(nPivoSum.ToString());
        }
    }

2018/08/19 23:34

정태식

출력:4613732 - 정태식, 2018/08/19 23:35
a=[1,2]
sums=0
for i in range(1,100):
    if a[-1] > 4000000:
        a.remove(a[-1])
        break
    a.append(a[i]+a[i-1])

for j in a:
    if j %2==0:
        sums +=j
print(sums)
#4613732

2018/08/20 14:55

S.H

first,second,sum,current= 1,2,2,0
while current <= 4000000:
    current = first + second
    if current % 2 == 0 : sum += current
    first,second = second,current

파이썬입니다.

2018/08/21 15:03

김준영

public static void main(String[] args) {
        int[] a = { 1, 2 };
        int sum = 0;
        while (a[0] < 4000000) {
            sum += a[0] % 2 == 0 ? a[0] : a[1] % 2 == 0 ? a[1] : 0;
            a[0] = a[0] + a[1];
            a[1] = a[0] + a[1];
        }
        System.out.println(sum);
    }

2018/08/29 18:25

김지훈

a,b=1,2
lst=[b]

while b<=4000000:
    a,b=b,a+b
    if b%2==0:
        lst.append(b)

print(sum(lst))

2018/09/07 10:45

전형진

def fibonacci(n, m):
    # returns fibonacci under number n

    l = []
    a, b = 0, 1
    for i in range(n):
        if a + b > m:
            return l
        a = a + b
        l.append(a)
        b, a = a, b

    return l

n = int(input(" returns n number of fibonacci: "))
m = int(input(" Put the Limits for the Fib Number: "))
fl = fibonacci(n, m)

evenl = []
for num in fl:
    if num % 2 == 0:
        evenl.append(num)

print(sum(evenl))


#returns n number of fibonacci: 100 
# Put the Limits for the Fib Number: 4000000  
# --> 4613732

4613732

2018/09/19 09:55

Charlie Jeong

public class  Pibo {
    public static void main(String[] args) {
        int tem = 0;
        int lat = 2;
        int sum = 0;
        for (int fir = 1; fir<=4000000;) {
            if (fir%2==0) {
                sum+=fir;
            }
            tem = lat;
            lat = fir+lat;
            fir = tem;
        }
        System.out.println(sum);
    }
}

2018/09/28 16:40

잭Jack

fib_sum = 0
a, b, c = 0, 1, 0

while c <= 4000000:
    c = a + b
    a, b = b, c
    if c % 2 == 0: fib_sum += c

print(fib_sum)

정답: 4613732

2018/09/30 01:27

input()

f_list = [1, 2]
f_val = sum(f_list[-2:])
while f_val <= 4000000:
    f_list.append(f_val)
    f_val = sum(f_list[-2:])
print(f_list)
value = sum([i for i in f_list if i%2 is 0])
print(value)
# answer is 4613732

2018/10/02 00:16

phg98

python 3.6

  def fib():
       a,b=0,1
       sum=0
       while a<4000000:
       if b%2==0:
        sum +=b
        a,b=b,a+b
       return sum

2018/10/16 10:27

Shin gil sang

l = [1,2]
l2 = []
count= 0

for i in range(3,4000001,1):

    if l[count]+l[count+1]==i :
        l.append(i)
        count+=1
    else:
        continue

for i in l:
    if i%2 == 0:
        l2.append(i)



print(sum(l2))

2018/10/25 22:39

임채원

a = 0
b = 1

fibo = []

while b <= 4000000:
    c = a + b

    a = b #1 1 2 3
    b = c #1 2 3 5

    fibo.append(b)

even_fibo = []
for even in fibo:
    if even % 2 == 0:
        even_fibo.append(even)

print(sum(even_fibo))
print(even_fibo)

'''
a = [1,2,3,4,5,6]

for i in a:
    a.remove(i)
    print(a)
'''

저 주석으로 달아놓은거는 결과가 [2,4,6]으로 나오는데 왜 그렇게 나오는지 모르겠네요 ㅠㅠ

2018/11/07 20:03

그사람 남한 볼 수 있어요

num1=1
num2=2
sum=0
num_list=[1,2]
for x in range(1,101):
    num3=num1+num2
    num1=num2
    num2=num3
    if num3%2==0:
        num_list.append(num3)
for x in range(0,len(num_list)-1):
    if num_list[x]<=4000000:
        sum+=num_list[x]
print(sum)



2018/11/07 23:48

빅디펜스

#include <stdio.h>
#include<stdlib.h>

int main()
{
    int i;
    int size = 4000000;
    int *pibo = malloc(sizeof(int) *size);  int sum;

    pibo[0] = 1;
    pibo[1] = 2;
    sum = pibo[0] + pibo[1];

    for (i = 0; i < 4000000; i++)
    {
        pibo[i + 2] = pibo[i] + pibo[i + 1];
        if (pibo[i + 2] >= 4000000)
                break;

        if (pibo[i + 2] % 2 == 0)
        {
            sum = pibo[i + 2] + sum;

        }
    }
    printf(" 짝수이고 400만이하인 수의 모든 합은 %d 입니다. ", sum);
}

4613733

2018/11/14 09:40

이호인

a, b = 1, 2
result = [a, b]
while a < 4000000:
    result.append(a+b)
    a, b = b, a+b
    return result
sum = 0
for i in result:
    if i % 2 == 0:
       sum += i
print(sum)

4613732 입니다.

2018/12/07 12:08

하이퍼

파이썬으로 풀이했습니다.
while 반복문에서 반복횟수는 4백만이 훨씬 넘을 것으로 예상되는 횟수로 해서 임의로 넣어주었습니다. 

previous = 0
current = 1
sum = 0
i = 0
while i < 100:
    temp = previous
    previous = current
    current = temp + previous
    if current >= 4000000:
        break
    if current % 2 == 0:
        sum = sum + current
    i = i + 1
print(sum)

2018/12/11 22:16

CPA Lee's classroom이회계사의 강의실

#include <stdio.h>

int main(void)
{
    int a = 1;
    int b = 2;
    int c=0;
    int t;
    int sum = 0;
    while (c<=4000000)
    {
        c = a + b;
        t = b;
        b = c;
        a = t;
        if (c % 2 == 0)
        {
            printf("%d\n", c);
            sum = sum + c;
        }
    }
    printf("%d", sum+2);
    return 0;


}

2018/12/18 20:08

흐긴노노

#include <stdio.h>

int main(void){
    int a,b,sum;

    a = 1;
    b = 2;
    sum = b;

    while(a<=4000000){
        a = a+b;
        b = b+a;

        if(a%2 == 0)
            sum += a;
        else if(b%2 == 0)
            sum += b;
    }

    printf("%d",sum);

    return 0;
}

2018/12/28 11:09

Jero

first, second = 1, 2
sum = 2

while first <= 4000000 :
    third = (first + second)
    if third % 2 == 0 : sum += third
    first, second = second, third
print(sum)

2019/01/01 22:35

lucky1to10

void main()
{
    int size = 4000000;
    int *pibo;
    pibo = (int*)malloc(sizeof(int) * size);
    pibo[0] = 1, pibo[1] = 2;
    int sum = pibo[1];
    for (int i = 0;; i++)
    {
        pibo[i + 2] = pibo[i] + pibo[i + 1];
        if (pibo[i + 2] > 4000000)
            break;
        if (pibo[i + 2] % 2 == 0)
        {
            sum += pibo[i + 2];
        }
    }

    printf("%d", sum);
    free(pibo);
}

2019/01/02 17:18

서규섭

FB = [1,2]
i = 1
while True:
    i += 1
    FB.append(FB[i-2] + FB[i-1])
    if FB[i] > 4000000: break
sum = 0
for k in range(i):
    if int(str(FB[k])[-1]) % 2 == 0: sum += FB[k]
print(sum)

답 : 4613732

2019/01/03 17:46

판다네밥상

namespace codingdojang__
{
    class Program
    {
        static void Main(string[] args)
        {
            List<int> fibonacci_list = new List<int> { 1, 2 };
            int total = 0;

            for (int i = 0; fibonacci_list[i] < 4000000; i++)
            {
                fibonacci_list.Add(fibonacci_list[i] + fibonacci_list[i + 1]);
            }

            foreach (var i in fibonacci_list)
            {
                if (i % 2 == 0)
                {
                    total += i;
                }
            }
            Console.WriteLine(total);
        }
    }
}

2019/01/04 12:06

bat

def fib(n):
    """ Returns n'th Fibonacci number.  """
    a, b = 1, 1
    for i in range(n):
        a, b = b, a+b
    return a

S = 0
for n in range(100):
    if fib(n)%2 == 0 and fib(n) < 4000000:
        S = S + fib(n)


print (S)

2019/01/16 22:25

carcassi

a = 0
b = 1
total = 0 
while b < 4000001:
    a = a + b
    b, a = a, b
    if b % 2 == 0:
        total += b
print(total)

2019/01/18 15:10

D.H.

public static void main(String[] args) {
        int a=1,b=2,temp,sum=0;
        do {
            System.out.println(a);
            if(a%2==0)
                sum+=a;
            temp=a+b;
            a=b;
            b=temp;         
        } while(a<=4000000);
        System.out.println(sum);
    }

2019/02/14 19:20

송인성

fib=[0,1]
i=1
while True:
    i+=1
    t=fib[i-2]+fib[i-1]
    if t<=4000000: fib.append(t)
    else: break

sum=0
for i in range(len(fib)):
    if fib[i]%2==0:
        sum+=fib[i]

print(sum)

2019/03/02 22:43

ykleeac

package level1;

public class Fibonacci {
    public static void main(String[] args) {
        int val1 = 0;
        int val2 = 1;
        int val3 = 0;
        int total = 0;

        for(int i=1; val3 < 4000000; i++){
            val3 = val1 + val2;
            val1 = val2;
            val2 = val3;
            if(val2 % 2 == 0){
                total += val2;
            }
        }
        System.out.println(total);
    }
}

2019/03/21 10:14

HANJU HAN


public class Main {

    public static void main(String[] args) {

        int fib1 = 1;
        int fib2 = 2;
        int fib3 = 0;
        int sum = 0;
        while (fib3 <= 4000000)
        {
            fib3 = fib1 + fib2;
            fib1 = fib2;
            fib2 = fib3;
            if (fib3 % 2 == 0)
                sum += fib3;
        }

        System.out.println(sum + 2);
    }

}

2019/03/26 15:20

Albert

a=1
b=2
c=a+b
result = 0

while a<=4000000:
    if a%2==0:
        result+=a
    a=b
    b=c
    c=a+b

print(result) #4613732

2019/04/30 00:50

cheer

그냥 가볍게

#include <cstdio>

long long int even_fibo(int N)
{
    int ans[3] = {1,2,3};
    long long int ret = 0;
    while (ans[0] <= N)
    {
        if (ans[0] % 2 == 0)
            ret += ans[0];
        ans[0] = ans[1];
        ans[1] = ans[2];
        ans[2] = ans[0] + ans[1];
    }
    return ret;


}
int main(void)
{
    int N;
    scanf("%d", &N);
    printf("%lld", even_fibo(N));
    return 0;
}

2019/05/01 23:51

이기준

Fibonacci=[1,2];ans=2

while (Fibonacci[len(Fibonacci)-1]<=4000000):
    Fibonacci.append(Fibonacci[len(Fibonacci)-2]+Fibonacci[len(Fibonacci)-1])
    if Fibonacci[len(Fibonacci)-1]%2==0:
        ans+=Fibonacci[len(Fibonacci)-1]

print(ans)

2019/05/02 14:42

암살자까마귀

Fibo = [1,2]
pb = 3
i = 2
Sum = 2
while pb <= 4000000:
    pb = Fibo[i-2] + Fibo[i-1]
    if pb <= 4000000:
        Fibo.append(pb)
        if pb%2 == 0:
            Sum += pb
    i += 1
print(Sum)

2019/05/12 21:54

Hwaseong Nam

#include <stdio.h>

int Fibonacci(int index);

void main(){

    int fibNumber = 1;
    int fibEvenSum = 0;

    while(Fibonacci(fibNumber)<=4000000){
        if(Fibonacci(fibNumber)%2==0){
            fibEvenSum = fibEvenSum + Fibonacci(fibNumber);
        }
        fibNumber = fibNumber + 1;
    }
    printf("%d",fibEvenSum);
}

int Fibonacci(int index){

    int temp;
    int countIndex=0;
    int fibZero=1;
    int fibOne=2;

    if(index==1){
        return fibZero;
    }else if(index==2){
        return fibOne;
    }else{
        for(countIndex;countIndex<index-2;countIndex++){
            temp = fibOne;
            fibOne = fibZero + fibOne;
            fibZero = temp;
        }
        return fibOne;
    }
}

2019/05/16 08:58

Wonsang Kim

def pibo(n):
    lst =[1,2]
    while sum(lst[-2:])<n:
        lst.append(sum(lst[-2:]))
    return lst
s = 0 
for i in pibo(4000000):
    if i%2 ==0:
        s += i
print(s)

4613732

2019/05/18 23:53

dodoman

def Even_Fibonacci_sum(n): #n 이하인 피보나치 수열의 총합
    a1=1 #초기값.
    a2=2 
    result=0
    while(True): 
        if a2<=n: #a2가 n을 넘으면 루프 종료
            if a2%2==0:
                result+=a2 #짝수이면 합산

            tmp=a1+a2 #다음항 만들기
            a1=a2
            a2=tmp

        else:
            break
    return result


if __name__ == '__main__':
    n=4e6 #4백만
    print(Even_Fibonacci_sum(n))

파이썬 3.7 사용. 4백만뿐 아니라 모든 자연수n에서 쓸 수 있게 만들어봤습니다.

2019/06/06 16:34

왕초보

a = 0
b = 1
c = 0

while b < 4000001:
    a = a + b  
    a, b = b, a
    if b % 2 == 0:
        c += b

print(c)

2019/06/25 11:39

파이썬주니어

t = [1,2]
while (True):
    if t[-1] > 4000000:
        break
    t.append(t[-2]+t[-1])

sum = 0
for i in range(len(t)):
    if t[i] % 2 == 0:
        sum += t[i]

print(sum)

2019/07/05 21:51

최은미

python

def fib(ind):   # 피보나치수열을 발생시키는 함수
    if ind == 0:
        return 1
    if ind == 1:
        return 2
    if ind >= 2:
       return fib(ind-1) + fib(ind-2)
index = 0
while True:   # 항의 값이 4백만을 넘는 최초의 경우 탐색 -> index == 32
    number = fib(index)
    if number <= 4000000:
        index += 1
    if number > 4000000:
        print(index, number)
        break
seq= []
for i in range(0,32):   # index 31 이하인 항들 중 짝수인 경우만 리스트 seq에 포함시킴
    if fib(i) % 2 == 0:
        seq.append(fib(i))
print(seq)
sum(seq)   # answer : 4613732

2019/07/29 17:18

apriori

python 3.7

{1, 1, 2, 3, 5,...}로 진행되는 피보나치 수열은 3n 번째 항은 짝수가 되고 나머지는 홀수입니다. 이유는 짝+짝=짝, 홀+짝=홀, 홀+홀=짝 이므로 {홀+홀, 홀+짝, 짝+홀, 홀+홀,...} 이 반복되기 때문입니다.

따라서 3n번째 항을 바로 계산하면 반복횟수가 1/3이 되고 짝수 확인을 위한 if문을 없앨 수 있습니다.

a = 0
b = 1
res = 0

while 1:
    a, b = a + 2 * b, 2 * a + 3 * b
    if a > 4000000:
        break
    res += a
print(res)

2019/07/30 10:04

AY

%Matlab

Fibo=[1,2];
n=2;a=1;b=2;
while Fibo(n)<3000000
    n=n+1;
    Fibo(n)=Fibo(n-1)+Fibo(n-2);
end
Fibo_even=[];
n=1;
for k=1:1:max(find(Fibo))
    if mod(Fibo(k),2)==0
        Fibo_even(n)=Fibo(k);
        n=n+1;
    else
    end
end
sum(Fibo_even)

2019/08/01 10:09

주노리

python 3.7 피보나치 수열은 "....홀,홀,짝,홀,홀,짝,...." 패턴을 가진다는 사실을 이용하여 피보나치 수열을 list로 직접 생성하면서 해당 리스트의 (3k+2)-번째 항을 더하였습니다.

i = 2
sum = 0

Fib = [1,1,2]
while 1:
    Fib += [Fib[i-1]+Fib[i]]
    if i%3 == 2: 
        sum+=Fib[i]
    i+=1
    if Fib[i] >= 4000000: break

print(sum)

2019/08/05 02:46

Sechi

public class pibonaci {

    public static void main(String[] args) {
        // TODO Auto-generated method stub
        int num1=0;
        int num2=1;
        int sum=0;
        for(int i=1; i<=4000000; i++) {
            if(i==num1+num2) {
                num1=num2;
                num2=i;
                if(i%2==0) {
                    sum=sum+i;
                }
            }

        }
        System.out.print(sum);
    }

}

자바로 풀었습니다. 정답은 4613732

2019/08/05 14:35

조호떡

num1=1
num2=2
result=0
even=[num1,num2]
while True:
    num3=num1+num2
    num4=num2+num3
    if num3>4000000 or num4>4000000:
        break
    else:
        even.append(num3)
        even.append(num4)
    num1=num3
    num2=num4
final=[]
for i in even:
    if i%2==0:
        final.append(i)
print(sum(final))

2019/08/06 08:48

박재욱

fibo = [1, 2]
i = 0
tmp = 0
while fibo[-1] < 4000000:
    k = fibo[i] + fibo[i+1]
    fibo.append(k)
    i += 1
del fibo[-1]
for i in range(len(fibo)):
    if fibo[i]%2 == 0:
        tmp += fibo[i]
print(tmp)

2019/08/28 21:12

이명운

PHP

$sum = 0;
[$i, $j] = [0, 1];
while ($j <= 4000000) {
    [$i, $j] = [$j, $i + $j];
    if ($j % 2 === 0) $sum += $j;
}
print_r($sum); // 4613732

2019/09/11 16:52

d124412

fibo = []

count = 0
fibo_val = 0
even_sub = 0

while fibo_val <= 4000000:
    if count == 0:
        fibo.append(1)
    elif count == 1:
        fibo.append(2)
    else:
        fibo.append(fibo[count - 2] + fibo[count - 1])

    fibo_val = fibo[count]
    if fibo_val % 2 == 0:
        even_sub += fibo_val
    count += 1

print(even_sub)

2019/09/22 17:25

박주현

List<Integer> fibonacci = new ArrayList<Integer>();

        fibonacci.add(1);
        fibonacci.add(2);

        int sum = 0;
        //1. 4백만 이하의 피보나치 수열을 먼저구한다
        for(int i=1;; i++) {
            fibonacci.add(fibonacci.get(i)+fibonacci.get(i-1));
            if (fibonacci.get(i)+fibonacci.get(i-1) > 4000000) {
                break;
            }
        }

        //2. 피보나치 수열 중 짝수인 것을 모두 더한다
        for(Integer i : fibonacci) {
            if(i%2==0) {
                sum += i;
            }
        }

        System.out.println(sum);

다른 분 풀이 참고해서 풀었습니다. 이제 막 collection 개념을 배웠는데 바로 응용할 수 있어서 재밌네요. 답 : 4613732

2019/09/30 19:48

yeeun shim


fibo = [1,2]
i = 0
result = []
while fibo[i] <= 4000000:
    sum1 = fibo[i]+fibo[i+1]
    fibo.append(sum1)
    if fibo[i]%2 ==0 :
        result.append(fibo[i])
    i+=1
print(sum(result))

2019/10/07 21:28

semipooh

파이썬

# Even Fibonacci numbers
a = 1
b = 2
c = 3
sum = 2
while c < 4000001:
    a, b, c = b, c, b + c
    if c % 2 == 0:
        sum += c

print(sum)

2019/10/11 21:37

Jzay

import java.util.*;
public class EvenFibonacciNumbers {

    public static void main(String[] args) {
        int a = 1;
        int b = 2;
        ArrayList<Integer> Fibonacci_list = new ArrayList<Integer>();
        for(int i=0;; i++) {
            if(a<b) {
                Fibonacci_list.add(a);
                a+=b;
            }
            else {
                Fibonacci_list.add(b);
                b+=a;
            }
            if(a>40000000||b>40000000) {
                break;
            }
        }
        int sum = 0;
        for(int j = 0; j<Fibonacci_list.size(); j++) {
            if(Fibonacci_list.get(j)%2==0&&Fibonacci_list.get(j)<4000000) {
                sum+=Fibonacci_list.get(j);
            }
        }
        System.out.println(sum);
    }
}

2019/11/08 16:32

big Ko

파이썬 입니다.

def fibo(n):    # n을 인덱스로 사용하여 fibo_list에서 원하는 피보나치수열 값을 꺼낼 수 있도록 함수를 만들었습니다.
    fibo_list=[]   # 만든 피보나치 수열을 담는 리스트를 정의
    a=1            
    b=2
    fibo_list.append(a)
    for i in range(n):       # 기존 while 반복문보다는 for문이 n을 인덱스로하는 함수에 적용시 원하는 값을 리턴하는데
        fibo_list.append(b)    # 좋아 for문을 적용했습니다.
        a,b=b,a+b                # a 값에 b를 집어넣고, b값에 a+b를 집어넣어  a(n-2) + a(n-1) = a(n) 피보나치 수열
    return fibo_list[n]           #  정의식과 맞아 떨어집니다.
   # n을 인덱스로한 fibo_list의 리스트 요소를 fibo_list[n]를 리턴하는 함수를 정의 했습니다.

fibo_sum=sum(list(filter(lambda x: x%2==0 and x<=4000000 ,map(lambda x:fibo(x),range(32)))))

# 리스트 내 요소를 더하는 sum()을 가장 앞에 배치했고
# filter 함수를 list로 만들도록 list(filter()) 순으로 배치했습니다.
# filter함수의 반복값 x에 들어가는 값으로 map(lambda x:fibo(x),range(32))을 주었습니다.
# 32 인덱스까지가 500만을 넘기에  32를 주었고 map함수를 주어 iterable로 피보나치 수열 수들이 리턴되도록 했습니다.
# lambda x: x%2==0 and x<=4000000 리턴된 피보수열 수들을이 짝수이면서 400만 이하가되도록 함수를 배치했고
# 앞에 배치한 filter 함수에 의해 조건식에 만족하는 피보 수열 수들이 리스트가 되도록 만들었습니다.

생각했던걸 주석으로 달려니 글이 길어지네요 ㅋ 굳이 보지 않으셔도 됩니다. ㅋ

2019/11/18 12:42

data big

파이썬입니다.

a, b, sum = 0, 1, 0
while b <= 4000000:
  if b % 2 == 0:
    sum += b
  a, b = b, a + b

print(sum)

2019/12/20 15:50

Sean

list_pibo = [1, 2]
new_list = [2]
i = 0
while True:
    new_int = list_pibo[i] + list_pibo[i + 1]
    list_pibo.append(new_int)
    if new_int % 2 == 0:
        new_list.append(new_int)
        if new_list[-1] > 4000000:
            break
    i += 1
sum = 0
for i in range(len(new_list)-1):
    sum += new_list[i]
print(sum)

2019/12/20 22:49

김민규

a=0
b=1
s=0
while b <=4000000:
    a,b=b,a+b
    if a%2==0: s+=a
print(s)

2019/12/23 17:15

뚜루꾸까까

def even_fib(num_SUM, dep, num1, num2) :
    next_num = num1 + num2
    if next_num % 2 == 0 :
        num_SUM += next_num

    if next_num < 4000000 :
        return even_fib(num_SUM, dep+1, num2, next_num)
    else :
        return num_SUM

even_fib(2, 1, 1, 2)

결과

4613732

2019/12/27 16:34

GG

a, b= 0, 1
total=0
while a<=4000000:
    a=a+b
    a, b=b, a
    if a%2==0:
        total+=a
print(total)

2019/12/31 12:36

박시원

a = 0

b = 1

result = []

while True:
    c = a + b
    a = b
    b = c

    if c > 4000000 :
        break
    if c%2 ==0 :
        result.append(c)
print(sum(result))

2020/01/23 15:02

김희준

파이썬 3입니다

평범하게 풀었습니다

F = [0, 1]
even_sum = 0
while True:
    temp = F[0] + F[1]
    if temp > 4000000:
        break
    F[0] = F[1]
    F[1] = temp
    if temp % 2 == 0:
        even_sum += temp

print(even_sum)

2020/01/24 23:54

우재용

public class Fibonacci2 {
    public static void main(String[] args) {
        Fibonacci2 Fb =new Fibonacci2();
        int a = 0;
        int result = 0;
        int sum =0;

        while(Fb.fibonacci(a)<=4000000) {
               a++;
           }

        for(int l=0; l<a; l++) {
            result = Fb.fibonacci(l);
            if(result % 2 == 0) {
                sum += result;
            }
        }
        System.out.printf("모든 항의 합은 %d 이다.",sum);
    }
    int fibonacci(int a) {
        if( a == 0 || a== 1) {
            return a;
        }
        else {
        return fibonacci(a-2)+ fibonacci(a-1);
        }
    }   
}

2020/01/28 23:59

김강민

a=1

b=2

Fibo =[1,2]

c=0

while (a+b) < 4000000:

        c = a + b

        Fibo.append(c)

        a = b

        b = c

print(Fibo)

Fibo_even=[]

for j in range(0,len(Fibo)):

    if int(Fibo[j]%2) == 0:

        Fibo_even.append(Fibo[j])

print(sum(Fibo_even))

2020/02/04 10:33

HyukHoon Kim

Nlist= [1,2]
Nfinish = 2
check = 0
for i in range(1,4000001):
    if Nlist[check] + Nlist[check+1] == i:
        Nlist.append(i)
        check += 1
        if i % 2 == 0:
            Nfinish += i

print(Nfinish)

2020/02/08 23:21

BlakeLee

import numpy as np def fib(n): if n == 0 : return 1 if n == 1 : return 2 return fib(n-2) + fib(n-1)

result = [] for i in range(4000000): i = fib(i) if i%2 == 0: result.append(i)

print(np.sum(result))

4000000이 수가 너무 커서 로딩이 너무 기네요. 10이나 20같이 십자리 수 내에서는 잘 돌아가는 것이 확인되어서 그냥 올립니다.

2020/02/19 13:01

이국성

python 3.8

a,b=1,2
s=[]
while b < 4000000:
   if not b% 2 :  s.append(b)
   a,b=b,a+b
print(sum(s))

2020/03/06 00:31

mr. gimp

a,b=[1,2]
sum=0
while b<=4000000:
    a=a+b
    b,a = a,b
    if b%2==0:sum+=b

print(sum)

2020/03/07 09:29

황예진

a=1
b=2
c=a+b
sum=b
print (a)
print (b,sum)

while (1):
    a=b
    b=c
    c=a+b
    if (c>4000000):
        break
    if (c%2==0):
        sum=sum+c
    print (c,sum)

print()
print (sum)

2020/03/09 13:59

Buckshot

추천 코드 약간 수정 했어요


``````{.python}
a, b = [0, 1]
sum = 0
while b <= 4000000:
    if b == 4000000:
        break
    a = a + b
    b, a = a, b
    if b % 2 == 0:        
        sum += b

print(sum)

2020/03/16 23:36

우제훈

def fibonacci_sum(fibonacci):
    n = 0
    result = []
    while True:
        if fibonacci[n] + fibonacci[n + 1] <= 4000000:
            fibonacci.append(fibonacci[n] + fibonacci[n + 1])
        else:
            break
        n += 1

    for x in fibonacci:
        if x % 2 == 0:
            result.append(x)

    return sum(result)


print(fibonacci_sum([1, 2]))

2020/03/19 17:08

inca1735

l=[1,2]
c=0
i=-1
s=0
while True:
    i+=1
    c=l[i]+l[i+1]
    if c<=4000000:
        l.append(c)
    else:
        break
for i in l:
    if i%2==0:
        s+=i
    else:
        pass
print(s)

파이썬 입니다.

2020/03/29 12:24

di figo


p=[1,2]

for i in range(100):
    if p[i+1]>4000000:break
    else:
        p.append(p[-1]+p[-2])

sum=0
for i in p:
    if i%2==0:
        sum+=i
    else:pass


print(sum)

print(p)  

2020/04/22 23:27

양양짹짹

import java.util.ArrayList;

public class Q134 {

    public static void main(String[] args) {
        int sum = 0;
        ArrayList<Integer> result = new ArrayList<Integer>();
        for(int i=1;; i++) {
            if(i==1||i==2) {
                result.add(i);
            } else if(i>2 && result.get(i-2)+result.get(i-3) < 4000000) {
                result.add(result.get(i-2)+result.get(i-3));
            } else if(result.get(i-2)+result.get(i-3)>4000000) {
                break; // 4백만 보다 커지면 for문 종료
            }
        }
        for(int i=0; i<result.size();i++) {
            if(result.get(i)<4000000 && result.get(i)%2==0) { // 4백만 보다 작고, 짝수일 경우
                sum+=result.get(i);
            }
        }
        System.out.println(sum);
    }
}

답은 4613732 나오네요

2020/05/05 15:13

Daniel Park

def even_fib_sum():
    seq_list = [1, 2]
    while seq_list[-1] <= 4000000:
        seq_list.append(seq_list[-1] + seq_list[-2])
    return sum([i for i in seq_list[:-1] if i % 2 == 0])

2020/05/07 17:00

김준혁

a = [1,2]
i = 0
b = []

while max(a) <= 4000000 :
    if (int(a[i])+int(a[i+1])) >= 4000000:
        break
    a.append(int(a[i])+int(a[i+1]))
    i += 1
for i in a:
    if int(i)%2 == 0:
        b.append(i)
    else:
        continue
print(sum(b))

2020/05/08 14:22

Money_Coding

def fibonacci(n):
    if n==0:
        return 0
    if n==1:
        return 1
    else:
        return fibonacci(n-2)+fibonacci(n-1)
k=1
x=0
while True:
    if fibonacci(k)<=4000000:
        if fibonacci(k)%2==0:
            x+=fibonacci(k)
            k=k+1
        else:
            k=k+1
    else:
        break
print(x)

2020/05/08 19:07

도희성

temp=[None]*1000000
temp[0]=1
temp[1]=2

sum=2
i=2
while True :
    temp[i]=temp[i-2]+temp[i-1]

    if temp[i]%2==0 :
        sum+=temp[i]

    if temp[i]>4000000 :
        break
    i+=1

print(sum)

2020/05/27 17:35

조윤재

a = 1
b = 2


count = 0

while b <= 4000000:
    if b % 2 == 0:
        count += b
    b = a + b
    a = b - a

print(count)

드디어 배열없이 문제를 풀어봤네요 ㅜㅜ 사고가 조금 확장된 느낌이에요!

2020/06/10 20:36

진)파이썬마스터

def fibonacci(L):
    L.append(L[-1]+L[-2])
def fibonacci2(L):
    print(sum([i for i in L if i%2==0 and i<4000000]))

List1=[1,2]
while List1[-1]<4000000:
    fibonacci(List1)

fibonacci2(List1)

답은 4613732

2020/07/29 21:08

김병관

package test;
import java.util.*;

public class Test{
    public static void main(String[] args) {
        ArrayList<Integer> list = new ArrayList<>();
        int j=0;
        int count = 0;
        list.add(1);
        list.add(2);
        for(int i=3; i<=4000000; i++) {
            if(i == list.get(j) + list.get(j+1)) {
                list.add(i);
                j++;
            }
        }
        for(int b : list) {
            if(b % 2 == 0)
                count += b;
        }
        System.out.print(count);
    }
}

2020/08/18 13:01

들산

#include <stdio.h>

int main(){

    int a1=1;
    int a2=2;
    int temp;
    int sum=0;

    while (a2<4000000)
    {
        if(a2%2==0)
            sum += a2;
        temp=a1+a2;
        a1=a2;
        a2=temp;        

    }

    printf("%d",sum); 
    return 0;
}

답은 4613732

2020/09/18 22:32

June

namespace _60일차_9월30일
{        
    class MainApp
    {

        //1, 2, 3, 5, 8, 13, 21, 34, 55, 89, ... 짝수이면서 4백만 이하인 모든 항을 더하면 얼마가 됩니까?
        static void Main(string[] args)
        {
            int first = 0;
            int second = 1;
            int Temp = 0;
            int result = 0;

            while (Temp <= 4000000)
            {
                Temp = first + second;
                first = second;
                second = Temp;
                if (Temp % 2 == 0)
                    result += Temp;
            }

            Console.WriteLine($"Result = {result}");
        }
    }
}

2020/09/30 12:34

MinSeung Kang

a,b=1,2
total=0
while b<=4000000:
    if b%2==0:
        total+=b
    a,b=b,a+b
print(total)

2020/10/07 10:13

AppleFarmer

class SumPita:
    def __init__(self):
        self.sum = 0
    def doEvenSum(self):
        b = []
        b.append(1)
        b.append(2)
        self.sum = 2
        i = 2
        while True:
            c = b[i-2]+b[i-1]
            if c>4000000:
                break
            b.append(b[i-2]+b[i-1])
            if (b[i-2]+b[i-1])%2==0:
                self.sum += b[i-2]+b[i-1]
            i = i+1
        print(self.sum)

a = SumPita()
a.doEvenSum()

2020/10/12 21:20

footsize

파이썬입니다.

def fib(n):

    if n <= 0:
        return 0

    elif n <= 1:
        return n

    else:
        return fib(n-2) + fib(n-1)


fib_even = []
cnt = 0
while True:
    cnt +=1
    fib_num = fib(cnt)

    if fib_num > 4_000_000:
        break

    if fib_num % 2 == 0:
        fib_even.append(fib_num)


print(sum(fib_even))

2020/10/22 23:31

방금프로그래밍시작함

def pibo(num):
    temp = [1, 2]
    while True:
        if temp[-1] + temp[-2] > num:
            break
        else:
            temp.append(temp[-1] + temp[-2])

    return temp

result = []
for aa in pibo(4000000):
    if aa % 2 == 0:
        result.append(aa)

print(sum(result))

2020/11/17 08:16

DSHIN

fibo=[1,2]

i=2

while True:

  new=fibo[i-2]+fibo[i-1]

  if new > 4000000:

    break

  fibo.append(new)

  i=i+1

answer=0

for i in fibo:

  if i%2==0:

    answer=answer+i

print(answer)

2020/11/28 16:07

전준혁

array=[1,1]
Sum = 0

while array[1]<=4000000:

    array[0] = array[0]+array[1]

    array[1] = array[0]+array[1]

    Sum+=sum([x for x in array if x%2==0])

if array[1]>4000000 and array[1]%2==0:
    print(Sum-array[1])
else :
    print(Sum)

2020/12/23 19:16

hankyu

list_fib = [1, 2]
result = 2
i = 0

while list_fib[-1] <= 4000000:
        list_fib.append(list_fib[i] + list_fib[i+1])
        i += 1
        if list_fib[-1] % 2 == 0:
            result += list_fib[-1]

print(result)

2021/01/07 16:33

코딩뚜

pibonacci = [1,2]

while pibonacci[-2]+pibonacci[-1]<=4000000:
    pibonacci.append(pibonacci[-2]+pibonacci[-1])
print(sum([x for x in pibonacci if x%2==0]))

2021/01/15 14:58

손우민

def f(n):
    if n == 0:
        return 0
    if n == 1:
        return 1

    return f(n-1) + f(n-2)

count = 0
i = 2
while f(i) <= 4000000:
    if f(i) % 2 == 0:
        count += f(i)
    i += 1

print(count)

2021/02/03 13:37

Ha



def Fibonacci(a,b):
    A=[a,b]
    i=0
    tot=0
    tots=0
    while A[i+1] < 4000000:
        tot=A[i]+A[i+1]
        if tot>4000000:
            break
        A.append(tot)
        i+=1
    for i in A:
        if i%2==0 and i<=4000000:
            tots+=i
    print(tots)


Fibonacci(1,2)



2021/02/04 21:30

fox.j

list = [1,2]
list1 = []
for i in range(100):
    sum1 = list[-1] + list[-2]
    list.append(sum1)
    if sum1 % 2 == 0 and sum1 <= 4000000:
        list1.append(sum1)

print(sum(list1) + 2)

2021/02/07 22:53

개촙오

def fibo(n):
    memo={1:1, 2:2}
    output = 2
    i = 2
    while memo[i] <= n:
        i += 1
        memo[i] = memo[i-2] + memo[i-1]
        if memo[i] % 2 == 0:
            output += memo[i]
    return output

print(fibo(4000000))

2021/02/08 11:23

asdfa

l = [1,2]

i = 0 

while i < 4e6:
    i = l[-1]+l[-2]
    l.append(i)

print(sum(list(filter(lambda x:x%2 == 0,l))))

2021/02/09 08:50

서해원

python 3.9.1입니다.

def fib(n):
    result = []
    if n >= 0: result.append(0)
    if n >= 1: result.append(1)
    while True:
        result.append(result[-1] + result[-2])
        if result[-1] > n:
            del result[-1]
            break
        if result[-1] == n:
            break
    return result
whole_fib = fib(4000000)
answer = [num for num in whole_fib if num % 2 == 0]
print(sum(answer))

결과입니다.

4613732

2021/02/09 12:52

이준우

n=4000000
array=[1,2]
while True:
    s = array[-1] + array[-2]
    if s < n:
        array.append(s)
    else:
        break
s=0
for i in range(0,len(array)):
    if array[i] % 2 == 0:
        s += array[i]
print(s)

2021/02/23 16:33

원유준

fib=[1,2]
a=1
b=2
plus=0

while True:
    a=a+b
    fib.append(a)
    b=b+a
    fib.append(b)
    if a > 4000000 or b > 4000000 :
        break

for i in fib:
    if i % 2 == 0:
        plus+=i

print(plus)

2021/02/27 10:46

최우진

fib = [0,1]
s = 0
while fib[-1] <= 4e6:
    fib.append(fib[-1]+fib[-2])
    if fib[-1]%2 == 0:
        s += fib[-1]
print(s)

2021/03/24 10:59

aryagaon

'''
피보나치 수열의 각 항은 바로 앞의 항 두 개를 더한 것이 됩니다. 1과 2로 시작하는 경우 이 수열은 아래와 같습니다.

1, 2, 3, 5, 8, 13, 21, 34, 55, 89, ...

짝수이면서 4백만 이하인 모든 항을 더하면 얼마가 됩니까?
'''
#sum of even Fibonacci number

def fibonacci_even_number(N):
    org=[1,2]
    even=[2] 
    sum_1=3

    while sum_1 <= int(N):
        org.append(sum_1)
        if sum_1%2 ==0:
            even.append(sum_1)
        sum_1=org[-1]+org[-2]
    return sum(even)

2021/04/26 09:50

최태호

  1. 피보나치수열을 list로 표현하면, [1,2,3,5,8,.... ]이고
  2. 이때, 짝수는 (3의배수+2)의 순번에서만 나옵니다.
  3. 이를 고려하면 피보나치수열을 list로 만들고 (3의배수+1)의 숫자만 선택하게 하면 짝수만 골라지게됩니다

N=4000000
Pib=[1,2]
Even_P=[]
i=0



while i < N:
    i = Pib[-1]+Pib[-2]
    if i <N:
        Pib.append(i)

for j in range(len(Pib)):
    if j%3==1:
        Even_P.append(Pib[j])


print(Pib)
print(Even_P)
print(sum(Even_P))

2021/06/18 14:24

가을아침

N1, N2, S = 1, 2, 3

while N1+N2<=4000000:
    N1, N2, S = N2, N1+N2, S+N1+N2

print(S)

2021/06/19 13:54

김준우

list = [1,2]
i=2

while True:
    list.append(list[i-2] + list[i-1])
    if list[i-2] + list[i-1] > 4000000:
        break
    i+=1

sum=0
for i in list:
    if i % 2 == 0:
        sum+=i
    else:
        pass
print(sum)

2021/06/23 12:11

inkuk ju

def fibonacci():
    result = 0
    list = [1, 2]
    i = 0
    while True:
        list.append(list[i] + list[i + 1])
        i += 1
        if int(list[i]) > 4000000:
            break
        if list[i] % 2 == 0:
            result += list[i]
    return result
print(fibonacci())

2021/07/06 19:19

김준규

#codingdojing_even fibo numbers

def fibo(n):

    if n == 0:
        return 0
    elif n == 1:
        return 1
    else:
        return fibo(n-1) + fibo(n-2)


result = 0
n = 0

while fibo(n) < 4000000:
    if fibo(n) % 2 == 0:
        result += fibo(n)
    else:
        pass

    n += 1

print(result) #4613732

########################################

result = 0
x = 0
y = 1

while y < 4000000:

    if y%2 == 0: result += y #순서 유의

    x = x + y
    x, y = y, x 

print(result) #4613732


2021/07/11 20:56

Jaeman Lee

파이썬으로 작성되었습니다.

fibonacci = [1, 2]

sum = sum(fibonacci)
for i in range(31):
    fibonacci.append(fibonacci[i] + fibonacci[i + 1])

    if fibonacci[-1] > 4000000:
        break
    if fibonacci[-1] % 2 == 0:
        sum += fibonacci[-1]

print(sum)

2021/07/26 15:28

baek choi

Fibonacci = [1,2]
even = []

for n in range(2,10000):
  if Fibonacci[n-1] + Fibonacci[n-2] > 4000000:
    break
  Fibonacci.append(Fibonacci[n-1] + Fibonacci[n-2])

for i in Fibonacci:
  if i % 2 == 0:
    even.append(i)

print(sum(even))

2021/08/12 17:40

김동현

package exam;


public class Ex20 {

    public static void main(String[] args) {


        int f1 = 1;         // 첫번쨰 항
        int f2 = 2;         // 두번째 항
        int f3 = 0;         // 세번째 항
        int max = 4000000;  // 맥스값
        int sum  = f2;      // 짝수만 더한다

        while(f3 <= max) {
            // 대입연산자 이용
            f3 = f1 + f2;
            f1 = f2;
            f2 = f3;
            // f1 + f2의 값이 짝수이면 sum에 더한다
            if(f3 % 2 == 0) {
                sum += f3;
            }
        }
        System.out.println("sum : " + sum);
    }
}

sum : 4613732

2021/08/17 12:46

전채

a = 0
b = 1
c = 0
while b <= 4000001:
    a += b
    b,a = a,b
    if b % 2 == 0:
        c += b

print(c)

2021/08/17 15:44

서현준

fib = [0,1]
while (fib[-1]+fib[-2]) <= 4000000 :
    fib.append(fib[-1]+fib[-2])
print(sum([x for x in fib if x % 2 == 0]))

2021/08/31 16:54

//python

a,b=1,2
sum=0
while a<=4000000:
    if a%2==0:
        sum+=a
    a, b = b, a + b
print(sum)

2021/09/17 17:55

ninanino

static int fib(int x) {
        if(x == 1)
            return x;
        else if(x == 2)
            return x;
        else
            return fib(x-2) + fib(x-1);
    }

    public static void main(String[] args) {
        int sum = 0;
        for(int i = 1; i <1000; i++) {
            System.out.print(fib(i) + " ");
            if(fib(i)%2==0 && fib(i) < 4000001)
                sum += fib(i);
            else if(fib(i) > 4000000)
                break;
        }
        System.out.println();
        System.out.print(sum);
    }

2021/10/24 10:40

박대현

arr = [1,2]

for k in range(2,1000000)    :
    arr.append(arr[k-1] + arr[k-2])
    if arr[k] >4000000 :
        arr.remove(arr[k])
        break

sum = 0
for k in range(len(arr))    :
    if arr[k]%2 == 0 :
        sum +=arr[k]

print(sum)

2021/12/16 21:47

양캠부부

a = [1,2]
n = 2
while a[-1] < 400:
    b =  a[n-1] + a[n-2] 
    a.append(b)
    n = n+1

even = [x for x in a if x%2 ==0]

print(sum(even))

2022/01/24 11:13

로만가

// Rust

fn main() {

let limit = 400_0000;
let mut a = 1;
let mut b = 2;
let mut total = 0;

while b <= limit {
    if b % 2 == 0 {
        total += b;
    }
    let tmp = a;
    a = b;
    b += tmp;
}
println!("{}", total);

}

2022/01/26 13:20

JW KIM

previous=1
current=1
sum=0

while current<=4000000:
    if current %2 == 0 : sum += current
    temp = previous
    previous = current
    current = current + temp

print(sum)

2022/02/10 20:05

오원석

result = [1, 2]
i=2
while i <400000:
    n= result[i-1]+result[i-2]
    if n <=4000000:
        result.append(n)
    else: break
    i = i+1

print(sum(filter(lambda x: x%2==0, result)))

2022/03/14 18:08

박건호

# 피보나치 수열의 각 항은 바로 앞의 항 두 개를 더한 것이 됩니다. 1과 2로 시작하는 경우 이 수열은 아래와 같습니다.
# 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, ...
# 짝수이면서 4백만 이하인 모든 항을 더하면 얼마가 됩니까?

# 피보나치 수열을 만든다

list_fibo = [1, 2]
num_last = 4000000
num_add = 0

while num_add <= num_last:
    i = len(list_fibo)
    num_add = list_fibo[i-1] + list_fibo[i-2]
    if num_add > num_last:
        break
    else:
        list_fibo.append(num_add)
        value_last = list_fibo[len(list_fibo)-1]

print(f'{num_last}까지의 피보나치 수열')
print(list_fibo)
print()

list_fibo_even = []

for j in list_fibo:
    if j % 2 == 0:
        list_fibo_even.append(j)
    else:
        pass

print(f'{num_last}까지의 피보나치 수열 중 짝수 리스트')
print(list_fibo_even)
print()

print(f'{num_last}까지의 피보나치 수열 중 짝수 합계')
print(sum(list_fibo_even))

2022/03/27 13:43

소망꿀

package com.algorithm.algorithmpractice.dojang;

public class OilerPivo {
    public static void main(String[] args) {
        int i = 1;
        int total = 0;
        while (pivo(i) < 4000000){
            if(pivo(i) % 2 == 0) {
                total += pivo(i);
            }
            i++;
        }
        System.out.println(total);
    }

    public static int pivo(int num) {
        if(num == 1){
            return 1;
        }
        if(num == 2){
            return 2;
        }
        return pivo(num-1) + pivo(num-2);
    }
}

2022/05/03 07:52

inkuk ju

fibo = [1, 2]
count = 0

while fibo[-1] < 4000000:
    if count >= 1:
        fibo.append(fibo[-1] + fibo[-2])
        count +=1
    else:
        count += 1

print(sum([x for x in fibo if x % 2 == 0]))

2022/05/13 14:15

씨잼

파이썬입니다.

list = [0,1]

while list[-1] <= 4000000:
    list.append(list[-1] + list[-2])

sum([x for x in list if x % 2 == 0 and x <= 4000000])

2022/06/08 15:31

김시영

n=400*10**4
a= [1,2]
b= 0
for i in range(1,n):
    if b < n:
        b = a[i-1]+a[i]
        a.append(b)
a =[i for i in a if i%2==0 and i<=n]  

print(a)
print(sum(a))

2022/06/17 20:07

준희

def evenFibo(ui):
    fb = [1,2]
    while fb[-2]+fb[-1] <= ui:
        fb.append(fb[-2]+fb[-1])
    even_fb = [ x for x in fb if x%2 == 0 ]
    for j in even_fb:
        if j == even_fb[-1]:
            print("%d" % j, end='')
        else:
            print("%d + " % j, end='')
    print(" = %d" % (sum(even_fb)))

ui = int(input("n 이하의 모든 짝수 피보나치항의 총합을 구합니다.\nn 입력>> "))
evenFibo(ui)

+)

# without function

ui = int(input("n 이하의 모든 짝수 피보나치항의 총합을 구합니다.\nn 입력>> "))

fb = [1,2]
while fb[-2]+fb[-1] <= ui:
    fb.append(fb[-2]+fb[-1])
even_fb = [ x for x in fb if x%2 == 0 ]

print(f"짝수이면서 {ui} 이하인 피보나치 수열:", str(even_fb)[1:-1])
print("총합:", sum(even_fb))

파이썬 3.8.5

2022/07/10 20:34

Estelle L



a = [1, 2]
def phibonachi(a):
    while True:
        a.append(a[-1]+a[-2])
        if a[-1] >4000000:
            break

Total_phibonachi = 2
phibonachi(a)
for i in a:
    if i%2 == 0:
        Total_phibonachi += i

print(Total_phibonachi)


2022/07/14 11:30

송동준

a = 0 ; b = 1
c = []
while b <= 4000000 :
    a, b = b, a+b
    if b%2 ==0 :
        c.append(b)     
sum(c)

2022/08/06 00:35

김보라

python

n_list = [1,2]
n_now = 0
n_sum = 0

i=1
while n_now <= 4e+6:
    n_now = n_list[i-1]+n_list[i]
    n_list.append(n_now)
    i += 1

for x in n_list[:-1]:
    if x%2 == 0:
        n_sum += x

print(n_sum)

2022/08/25 11:27

세라

  private static int fibonachEven(){
  //피보나치 값들 정렬하기
  ArrayList<Integer> num = new ArrayList<>();
  num.add(1);
  num.add(2);

  //짝수합
  int sum=0;

  for(int i=0; i<4000000; i++) {
      int newNum = num.get(i) + num.get(i+1);
      if(newNum>4000000) break;
      num.add(newNum);
  }

  for(int j : num) {
      if(j % 2 == 0) {
          sum += j; 
      }
  }

  return sum;

}

2022/09/16 13:37

서영재

Python. 다른 분들 코드를 보니 제 풀이는 메모리 효율성이 좋은 코드는 아니군요.

#evenFibonacciNumbers.py

def fibonacci():
    fibo=[1,2]
    result=[]
    while fibo[-2]+fibo[-1]<4000000: #n 이하의 피보나치 수열을 구하는 함수
        fibo.append(fibo[-2]+fibo[-1])
    for i in range(len(fibo)):
        if fibo[i]%2==0:
            result.append(fibo[i]) #피보나치 수열의 항 중 짝수만을 골라 리스트화
    print(sum(result)) #피보나치 수열의 짝수 항의 총합 출력

fibonacci()

#결과는 4613732

2022/10/07 09:05

Frye 'de Bacon

import numpy as np

intInput=4000000

def sumFibonacciNumbers(intInput):
    listNums=[1,2]
    intSum=0
    while listNums[-1]<=intInput:
        listNums.append(listNums[-1]+listNums[-2])#400만까지의 피보나치 수열 생성

    if(listNums[-1])>intInput:
        del listNums[-1]#400만을 넘게 될 마지막 원소 삭제

    for i in listNums:
        if i%2==0:    
            intSum+=i#400만까지의 짝수인 피보나치 수열 합계
    return intSum




print(sumFibonacciNumbers(intInput))

2023/03/11 17:45

Sol Song

a, b, sum = 1, 2, 0
while b <= 4000000:
   if b % 2 == 0:
      s += b
   a, b = b, a + b
print(sum)

2023/08/21 10:17

siu yoon

using System;
using System.Collections.Generic;

namespace solution
{
    class Program
    {
        static void Main(string[] args)
        {
            int n = 4000000;
            List<int> fibonacciLst = new List<int>() { 1, 1 };
            int idx = 1;
            int evenSum = 0;
            while(fibonacciLst[idx] <= n)
            {
                if(fibonacciLst[idx] % 2 == 0)
                    evenSum += fibonacciLst[idx];
                fibonacciLst.Add(fibonacciLst[idx - 1] + fibonacciLst[idx]);
                idx++;
            }
            Console.WriteLine("\n   {0}", evenSum);
        }
    }
}

2023/10/18 19:00

insperChoi

def even_fibonacci():
    results = 2

    fibo_1 = 1
    fibo_2 = 2
    fibo_3 = 0

    while fibo_3 <= 4000000 :

        fibo_3 = fibo_1 + fibo_2

        if fibo_3 % 2 == 0 :
            results += fibo_3

        fibo_1 = fibo_2
        fibo_2 = fibo_3

    return results

2024/12/13 06:40

Orange

fib = [1, 2, 3, 5, 8, 13, 21, 34, 55, 89]

i = len(fib)-1

while fib[i] < 4000000:
  add = fib[i] + fib[i-1]
  fib.append(add)
  i = len(fib)-1

sum_fib = 0

for seqnum in fib:
  if seqnum % 2 == 0 & seqnum < 4000000:
   sum_fib += seqnum

print(sum_fib)

2025/02/21 10:57

Dasol Lee

fib = [1, 2, 3, 5, 8, 13, 21, 34, 55, 89]

i = len(fib)-1

while fib[i] < 4000000:
  add = fib[i] + fib[i-1]
  fib.append(add)
  i = len(fib)-1

sum_fib = 0

for seqnum in fib:
  if seqnum % 2 == 0 & seqnum < 4000000:
   sum_fib += seqnum

print(sum_fib)

2025/02/21 20:46

Dasol Lee

limit = 4_000_000

piv = [1, 2]
while piv[-1] <= limit:
    piv.append(piv[-1] + piv[-2])

sum_pivo = sum(x for x in piv if x <= limit and x % 2 == 0)

print(sum_pivo)

2026/01/02 18:41

김성훈

total = 0
a, b = 1, 2

while a <= 4000000:
    if a % 2 == 0:
        total += a
    a, b = b, a + b

print(total)

2026/05/14 16:53

우영재

목록으로