2226844502 发表于 2019-9-26 17:06:07

        @Test
        public void test02() {
                int a = 1, b = 0, c = 0, num = 0;
                while (c >= 0) {
                        c = a + b;
                        a = b;
                        b = c;
                        if (c >= 4000000) {
                                break;
                        }
                        System.out.println(c);
                        if (c % 2 == 0) {
                                num += c;
                        }
                }
                // System.out.println(num);
        }

天云TY 发表于 2019-10-4 16:26:08

import tkinter as tk
a,b,c=1,1,1
x = 0
while True:
    c = a + b
    a = b
    b = c
    if c < 4000000 and c % 2 == 0:
      x += c
    elif c >= 4000000:
      break
r = tk.Tk()
tk.Label(r,text=x).pack()
r.mainloop()

1666194196 发表于 2019-10-8 16:31:21

#include <stdio.h>

void main(){
        //斐波那契数列中的每一项都是前两项的和。由1和2开始生成的斐波那契数列前10项为:
        //1, 2, 3, 5, 8, 13, 21, 34, 55, 89, …
        //考虑该斐波那契数列中不超过四百万的项,求其中为偶数的项之和。
       
        long x;//400万项,说明是个数组
        x=1;//定义前两个值,用来运算
        x=2;//
        long i,sum=x;//定义的数中有偶数,先加在sum中
        for(i=2;i<10;i++){//在这个数组内循环一遍
                x=x+x;//第三个数开始,等于前两个数的和 ,循环给x及以后的数赋值
                if(x%2==0){//如果这个数是偶数(能整除2)
                        sum+=x;//加到sum里面
                }       
        }
        printf("sum=%d\n",sum);//输出结果
}

杨扬阳羊洋 发表于 2019-12-18 10:31:25

int find_odd(int maxnum)
{
    int a=1,b=2,sum=2;
    int *p;
    for(int i=1;i<maxnum;i++)
    {
      if(i>2)
      {
            p=&i;
            if( (*p) == (a+b) )   // 找出斐波那契数
            {
                printf("p=%d\n",*p);
                a=b;
                b=*p;
                if( (*p)%2 == 0 )   // 找出斐波那契数中的值为偶数的项
                {
                  sum+=*p;
                  printf("sum=%d\n",sum);
                }
            }
      }
    }
    return sum;
}

guoquanli 发表于 2019-12-31 13:44:17

#include <stdio.h>
int main(int argc,char **argv)
{
    long int sum= 2;
    int var1 = 1;
    int var2 = 2;
   
    int var3 = var1 + var2;
    while(var3 <= 4000000){
      if(var3 % 2 == 0){
            sum += var3;
      }

      var1 = var2;
      var2 = var3;
      var3 = var1 + var2;
    }
    printf("sum is %ld\n",sum);
    return 0;
}

hjh18944743801 发表于 2020-1-10 17:07:38

#include <stdio.h>

int main()
{
        int a1 = 1, a2 = 2, an, sum = 0;
        an = a1 + a2;
        while(an <= 4000000){
                a1 = a2;
                a2 = an;
                an = a1 + a2;
                if(an % 2 == 0)
                        sum += an;
        }
        printf("%d\n", sum);
        return 0;
}

office 发表于 2020-2-14 12:06:58

x = 0
y = 1
z = 0
while True:
    x = x + y
    if x >= 4e6:
      print('A',z)
      break
    y = x + y
    if y >= 4e6:
      print('B',z)
      break
    if y%2 == 0:
      z = z + y
    if x%2 == 0:
      z = z + x
      

wyywang 发表于 2020-2-22 11:51:35

#include <stdio.h>

int main()
{
    long long int a = 1, b= 2, c = 0,sum = 0, a1 = 0, b1 = 0;
    while(1)
    {
      if (c > 4000000){break;}
      c = a + b;
      a = b;
      b = c;
      if(c % 2 ==0){sum += c;printf("111");}
    }
    printf("%dkkkk", c);
    printf("答案:%d", sum + 2); //刚开始2是偶数,加上。
    return 0;
}

啦啦啦13 发表于 2020-2-27 15:41:00

def Fibonacci(x):
    o =
    a,b = 1,2
    for i in range(2,x):
      a,b = b,a+b
      if b % 2 == 0:
            o.append(b)
    return sum(o)

if __name__ == '__main__':
    print(Fibonacci(10))

Cool_Breeze 发表于 2020-2-29 16:13:08

#include <stdio.h>
int main(void)
{
        int a=1,b=2;
        int tatol=0,sum=2;
        do
        {
                if (sum>4000000) break;
                if (!(sum%2)) tatol+=sum;
                sum=a+b;
                a=b;
                b=sum;
        }while(1);
        printf("%d",tatol);
        return 0;
}4613732
--------------------------------
Process exited after 0.01523 seconds with return value 0
请按任意键继续. . .

代号-K 发表于 2020-3-11 21:11:41

答案:4613732
int calculateFibona(int flag)
{
    int ret = 0;
    int a = 1;
    int b = 1;
    int c = a;
    while(a < flag)
    {
      if(a % 2 == 0)
      {
            ret += a;
      }
      c = a;
      a = a + b;
      b = c;
    }
    return ret;
}

int main(int argc, char *argv[])
{
    int sum = calculateFibona(4000000);
    printf("%d\n",sum);
    return 0;
}

多冷颜 发表于 2020-3-31 11:44:49

def Fibi(num):
    re = 2
    a, b = 1, 2
    for i in range(2, num):
      a, b = b, a + b
      if b % 2 == 0 and b <= 4000000:
            re += b
      else:
            continue
    return re
if __name__ == '__main__':
    print(Fibi(40))

永恒的蓝色梦想 发表于 2020-4-18 12:54:06

本帖最后由 永恒的蓝色梦想 于 2020-11-20 22:33 编辑

4613732#include<iostream>
unsigned int a = 0, b = 1, sum = 0, temp;


int main(void) {
    using namespace std;
    ios::sync_with_stdio(false);


    while (a < 4000000) {
      sum += a;
      a += b;
      b += a;
      temp = a + b;
      a = b;
      b = temp;
    }


    cout << sum << endl;
    return 0;
}

leon0149 发表于 2020-5-6 22:59:42

#include <stdio.h>

int main(void) {
    int i = 1;
    int n = 2;
    int sum = 2;

    while (n <= 4000000) {
      int temp = n;
      n += i;
      i = temp;
      if (n % 2 == 0)
            sum += n;

    }

    printf("%d", sum);

    return 0;
}

永恒的蓝色梦想 发表于 2020-5-9 13:23:56

office 发表于 2020-2-14 12:06


这么跟你说吧,版主也不知道答案,他只是个翻译题目的

liuzhengyuan 发表于 2020-5-12 10:00:40

本帖最后由 liuzhengyuan 于 2020-5-12 10:06 编辑

斐波那契数列怎么做我忘了{:10_284:}
完了,卡在 2 了{:10_266:}

终于做好了……
#include<iostream>
using namespace std;

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

永恒的蓝色梦想 发表于 2020-5-12 21:21:08

liuzhengyuan 发表于 2020-5-12 10:00
斐波那契数列怎么做我忘了
完了,卡在 2 了



不明白你为什么要用for循环{:10_277:}

atomloveanne 发表于 2020-6-2 19:19:58

本帖最后由 atomloveanne 于 2020-6-3 01:12 编辑

# # 题目2:在斐波那契数列中,找出4百万以下的项中值为偶数的项之和
# 1 2 3 5 8 13 21 34 ...

import datetime

start = datetime.datetime.now()
print("程序1开始时间:", start)

result = 0
num0 = 0
num1 = 1
num2 = 0
# temp = 1

while num2 < 4000000:
    num2 = num0 + num1
    if num2 % 2 == 0:
      result += num2
      print('result = ', result)
      run = datetime.datetime.now()
      print("程序2运行时间:", run)
      print("程序2运行了", run - start)
    num0 = num1
    num1 = num2
#    temp += 1
   
print('''程序1结果是''')
print(result)

end = datetime.datetime.now()
print("程序1结束时间:", end)
print("程序1运行时间", end - start)



程序1结果是
4613732
程序1结束时间: 2020-06-03 01:11:14.858601
程序1运行时间 0:00:00.260303

583164028 发表于 2020-8-7 21:21:59

本帖最后由 永恒的蓝色梦想 于 2020-8-8 12:57 编辑

看了一圈大部分都是循环 判定
根据斐波那契数列通向公式计算400万的项,向下取整
观察下表
n12345678910111213141516
Fibonacci1123581321345589144233377610987
偶数出现在3,6,9,。。项   n+=3可以求和了
For < 4000000, i += 3, t += Fibonacci];t
斐波那契数列通向公式
https://s1.ax1x.com/2020/08/08/a5MkY4.png

永恒的蓝色梦想 发表于 2020-8-8 12:51:53

本帖最后由 永恒的蓝色梦想 于 2020-8-8 12:57 编辑

583164028 发表于 2020-8-7 21:21
看了一圈大部分都是循环 判定
根据斐波那契数列通向公式计算400万的项,向下取整
观察下表偶数出现在 ...

哈哈,你可以看下 134 楼,用的是同样的原理,只不过没有开数组{:10_277:}
svg 图像无法正常显示,所以我帮你编辑了一下,改成了 PNG 图片{:10_256:}
页: 1 2 3 4 5 6 [7] 8 9
查看完整版本: 题目2:在斐波那契数列中,找出4百万以下的项中值为偶数的项之和