鱼C论坛

 找回密码
 立即注册
查看: 3629|回复: 33

题目2:在斐波那契数列中,找出所有值不大于4,000,000,并且为偶数的项之和

[复制链接]
发表于 2023-5-12 17:55:15 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
本帖最后由 欧拉计划 于 2023-7-4 19:15 编辑

题目2:在斐波那契数列中,找出所有值不大于4,000,000,并且为偶数的项之和


Even Fibonacci numbers

Each new term in the Fibonacci sequence is generated by adding the previous two terms. By starting with 1 and 2, the first 10 terms will be:

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

By considering the terms in the Fibonacci sequence whose values do not exceed four million, find the sum of the even-valued terms.


题目翻译:

斐波那契数列中的每一项被定义为前两项之和。

从 1 和 2 开始,斐波那契数列的前十项为:1, 2, 3, 5, 8, 13, 21, 34, 55, 89, ...

考虑斐波那契数列中数值不超过 4 百万的项,找出这些项中值为偶数的项之和。


视频讲解:




思路解析及源码参考(C & Python):

游客,如果您要查看本帖隐藏内容请回复


评分

参与人数 3荣誉 +6 鱼币 +8 贡献 +5 收起 理由
Zchyu + 5 + 5 + 3 学习打卡
鱼小二 + 2 + 2 无条件支持楼主!
zhangjinxuan + 1 + 1 无条件支持楼主!

查看全部评分

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

使用道具 举报

发表于 2023-5-13 17:05:56 | 显示全部楼层
#include <bits/stdc++.h>
using namespace std;

long long f[51], ans = 0;

int main() {
        f[1] = 1;
        f[2] = 2;
        for (int i = 3; i <= 50 && f[i - 1] <= 4000000; ++i) {
                f[i] = f[i - 1] + f[i - 2];
                if (f[i - 1] % 2 == 0) ans += f[i - 1];
        }
        printf("%lld\n", ans);
    return 0;
}

评分

参与人数 1荣誉 +2 鱼币 +2 贡献 +2 收起 理由
中英文泡椒 + 2 + 2 + 2 哇你每次都在

查看全部评分

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

使用道具 举报

发表于 2023-5-16 09:15:53 | 显示全部楼层
#include <bits/stdc++.h>
using namespace std;

typedef long long LL;
const int N = 55,INF = 4000000;
int f[N];
LL ans=2;

int main()
{
    f[1] = 1;
    f[2] = 2;
    for(int i=3;f[i-1]<=INF;i++)
    {
        f[i] = f[i-1] + f[i-2];
        if(f[i]<=INF&&f[i]%2==0) ans += f[i];
    }
    cout<<ans<<endl;
    return 0;
}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-5-27 00:15:23 From FishC Mobile | 显示全部楼层
1
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2023-5-27 01:59:02 | 显示全部楼层
list1 = [1,2]
while list1[-1] <= 4000000 * (pow(5,1/2)-1)/2:
    list1.append(list1[-2]+list1[-1])

print(sum([each for each in list1 if each % 2 == 0]))
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-5-27 06:34:29 From FishC Mobile | 显示全部楼层
学习
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2023-5-27 18:45:52 | 显示全部楼层
def fib():
    fib1, fib2 = 1, 1
    while True:
        yield fib1
        fib1, fib2 = fib2, fib1 + fib2

sum = 0
f = fib()
for x in f:
    if x > 4000000:
        break
    else:
        if x % 2 == 0:
            sum += x
print(f"值为偶数的项之和:{sum}")
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-5-28 18:42:53 | 显示全部楼层
开看
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2023-6-2 14:03:39 | 显示全部楼层
学习学习
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-6-4 09:06:21 | 显示全部楼层
111
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2023-6-15 09:45:56 | 显示全部楼层
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2023-6-17 10:01:22 | 显示全部楼层
2
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2023-6-18 20:37:32 | 显示全部楼层
6
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2023-6-27 23:18:48 | 显示全部楼层
Rust代码

fn fibonacci_sum(n: i64) -> i64 {
    let mut v: Vec<i64> = [1, 2].to_vec();

    let mut i = 2;

    while v[i - 1] <= n {
        v.push(v[i - 1] + v[i - 2]);
        i += 1;
    }

    v.iter().filter(|&&i| i % 2 == 0).sum()
}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-6-27 23:46:49 | 显示全部楼层
a = []
i = 1
j= 2
sum = 0
while i <= 4000000:
    a.append(i)
    if i % 2 == 0:
        sum += i
    i, j = j, i+j
print("偶数项的和为:%d" % sum)
print(a)
偶数项的和为:4613732
[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]
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-6-29 17:56:12 | 显示全部楼层
fn main() {

    let mut fibonacci: Vec<u32> = vec![1, 2];
    let mut i = 2;
    while fibonacci[i - 2] + fibonacci[i - 1] <= 4000000 {
        fibonacci.push(fibonacci[i - 2] + fibonacci[i - 1]);
        i += 1;
    }
    let sum: u32 = fibonacci.iter().filter(|x| *x % 2 == 0).sum();
    println!("数列为:{:?}", fibonacci);
    println!("偶数项的和为:{}", sum);
}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-7-2 22:00:52 | 显示全部楼层
#include <stdio.h>

int main(void) {
    int a = 1,b=2,sum = 2;
    int c = a + b;
    while(c < 4000000){
        if (c % 2 == 0){
            sum += c;
        }
        a = b;
        b = c;
        c = a + b;
    }
    printf("%d\n", sum);
    return 0;
}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-7-3 16:21:55 | 显示全部楼层
111111111111
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-7-7 10:07:09 | 显示全部楼层
打卡
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2023-7-8 18:24:36 | 显示全部楼层
import time
start = time.time()
NUM = 0
xulie = [1, 4000000]
for i in range(len(xulie)):
    xin = xulie[i-1] + xulie[i]
    for k in range(1, xin):
        NUM = NUM + k
print(NUM)
end = time.time()
print(end-start)

这么写的,运行了有结果,但不知道对不对,特来验证
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-12-26 21:18

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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