0

私は2番目のオイラー問題を解決しようとしています(400万未満の偶数フィボナッチ数の合計を計算します)。これまでのところ、これを思いつきました:

public class CCTrial1 {
    public static void fib(){
    long  a = 0, b = 1;
    long  c = 0, sum = 0;
    int i = 1;
    long even = 0;
    while(i < 400000){
        c = a + b;
        sum = c;
        a = b;
        b = c;
        if(sum %2 == 0){
            even += sum;

        }
        i++;
    }
    System.out.println("Count " +i);
    System.out.println("Last Fib no " +sum);
    System.out.println("Sum " +even);
    }

    public static void main (String[] args){
        fib();
    }
 }

long に変更しましたが、まだオーバーフローが発生します。どこが間違っているのか教えてください。

4

3 に答える 3

2

この問題は、最初の 400 万のフィボナッチ条件ではなく、400 万未満のフィボナッチ条件に関係しています。

たとえば、35 番目、36 番目、37 番目のフィボナッチ数は 5702887、9227465、14930352 です。それらはすべて 4000000 を超えているため、問題ステートメントではそれらすべてを考慮から除外しています。

于 2013-05-18T15:26:58.563 に答える