鱼C论坛

 找回密码
 立即注册
楼主: 欧拉计划

题目2:在斐波那契数列中,找出4百万以下的项中值为偶数的项之和

  [复制链接]
发表于 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);
        }
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 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()
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 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[10];//400万项,说明是个数组
        x[0]=1;//定义前两个值,用来运算
        x[1]=2;//
        long i,sum=x[1];//定义的数中有偶数,先加在sum中
        for(i=2;i<10;i++){//在这个数组内循环一遍
                x[i]=x[i-1]+x[i-2];//第三个数开始,等于前两个数的和 ,循环给x[2]及以后的数赋值
                if(x[i]%2==0){//如果这个数是偶数(能整除2)
                        sum+=x[i];//加到sum里面
                }       
        }
        printf("sum=%d\n",sum);//输出结果
}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 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;
}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 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;
}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 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;
}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 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
        
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 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;
}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-2-27 15:41:00 | 显示全部楼层
def Fibonacci(x):
    o = [2]
    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))
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 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
请按任意键继续. . .
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 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;
}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 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))
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 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;
}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 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;
}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-5-9 13:23:56 | 显示全部楼层

这么跟你说吧,版主也不知道答案,他只是个翻译题目的
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-5-12 10:00:40 | 显示全部楼层
本帖最后由 liuzhengyuan 于 2020-5-12 10:06 编辑

斐波那契数列怎么做我忘了
完了,卡在 2 了

终于做好了……
#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;
}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-5-12 21:21:08 | 显示全部楼层
liuzhengyuan 发表于 2020-5-12 10:00
斐波那契数列怎么做我忘了
完了,卡在 2 了

不明白你为什么要用for循环
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 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
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-8-7 21:21:59 | 显示全部楼层
本帖最后由 永恒的蓝色梦想 于 2020-8-8 12:57 编辑

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

                               
登录/注册后可看大图

评分

参与人数 1荣誉 +5 鱼币 +5 贡献 +5 收起 理由
永恒的蓝色梦想 + 5 + 5 + 5 不错

查看全部评分

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-8-8 12:51:53 | 显示全部楼层
本帖最后由 永恒的蓝色梦想 于 2020-8-8 12:57 编辑
583164028 发表于 2020-8-7 21:21
看了一圈  大部分都是循环 判定  
根据斐波那契数列通向公式计算400万的项,向下取整
观察下表偶数出现在 ...


哈哈,你可以看下 134 楼,用的是同样的原理,只不过没有开数组

svg 图像无法正常显示,所以我帮你编辑了一下,改成了 PNG 图片
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-12-22 15:48

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表