博客
关于我
ProjectEuler 2
阅读量:796 次
发布时间:2023-03-04

本文共 830 字,大约阅读时间需要 2 分钟。

斐波那契数列中的偶数项出现在每三项中的一项,即F(2), F(5), F(8), F(11), ...。为了高效求和这些偶数项,使用递推公式直接生成每个偶数项,直到超过400万,这样可以减少计算次数并优化性能。

递推方法

斐波那契数列中的偶数项满足递推关系:[ F(3n+2) = 4 \times F(3n-1) + F(3n-4) ]通过这个公式,我们可以每次生成下一个偶数项,而不需要生成所有中间的奇数项。

初始值

  • F(2) = 2
  • F(5) = 8
  • 接下来的偶数项由递推公式生成。

算法步骤

  • 初始化两个变量 ab 分别存储前两个偶数项。
  • 如果当前项超过400万,停止循环。
  • 每次生成下一个偶数项并加到总和中。
  • 更新 ab 为下一个偶数项的前两个值。
  • 代码实现

    private static int sumEvenFib(int N) {    if (N < 2) {        return 0;    }    int sum = 0;    int a = 2; // F(2)    int b = 8; // F(5)    if (a <= N) {        sum += a;    }    if (b <= N) {        sum += b;    }    int next = 4 * b + a; // F(8)    while (next <= N) {        sum += next;        a = b;        b = next;        next = 4 * b + a;    }    return sum;}

    主函数

    public static void main(String[] args) {    System.out.println(sumEvenFib(4000000));}

    结果

    运行上述代码,输出斐波那契数列中不超过400万的偶数之和。

    转载地址:http://jhxfk.baihongyu.com/

    你可能感兴趣的文章
    PML调用PDMS内核命令研究
    查看>>
    PMM安装-第一篇
    查看>>
    PMP知识要点(第九章)
    查看>>
    PNETLab 镜像包官方下载太慢?不急,最新版本PNET_4.2.10分享!
    查看>>
    POCO库中文编程参考指南(4)Poco::Net::IPAddress
    查看>>
    Quartz基本使用(二)
    查看>>
    POC项目安装与使用指南
    查看>>
    Podman核心技术详解
    查看>>
    pods 终端安装 第三方框架的一些命令
    查看>>
    Podzielno
    查看>>
    PoE、PoE+、PoE++ 三款交换机如何选择?一文带你了解
    查看>>
    PoE三种标准:标准 PoE、PoE+、PoE++,网络工程师必知!
    查看>>
    POI 的使用
    查看>>
    poi 读取单元格为null者空字符串
    查看>>
    poi-tl简介与文本/表格和图片渲染
    查看>>
    pointnet分割自己的点云数据_PointNet解析
    查看>>
    POI实现Excel导入Cannot get a text value from a numeric cell
    查看>>
    POI实现Excel导入时提示NoSuchMethodError: org.apache.poi.util.POILogger.log
    查看>>
    POI实现Excel导出时常用方法说明
    查看>>
    POI导出Excel2003
    查看>>