`
mysh
  • 浏览: 29580 次
  • 性别: Icon_minigender_1
  • 来自: 福州
社区版块
存档分类
最新评论

Project Euler p12 - Highly divisible triangular number

阅读更多

 

http://projecteuler.net/problem=12

 

求因数个数大于500的数, 关键在于下面两个隐藏的条件

triangle(i)=i*(i+1)/2

divisors(a*b)=divisors(a)*divisors(b)

 

countDivisors 其实它还可以优化成递归求解, 而不是一个个去数, 不过量不大, 就算了.

 

76576500 576

23 ms

 

 

@Test  
public void t1() {  
    int d;  
    for (int i = 7; i < Integer.MAX_VALUE; i++) {  
        if (i % 2 == 0) d = countDivisors(i / 2) * countDivisors(i + 1);  
        else d = countDivisors(i) * countDivisors((i + 1) / 2);  
        if (d >= 500) {  
            System.out.println(i * (i + 1) / 2 + " " + d);  
            return;  
        }  
    }  
}  
  
private int countDivisors(int n) {  
    int c = 1;
    double sqrt = Math.sqrt(n);  
    for (int i = 2; i <= sqrt; i++) {  
        if (n % i == 0) {
            c += 2;  
            if (i == sqrt) c--;
        }
    }  
    return c+1;  
}  

 

1
2
分享到:
评论

相关推荐

    华为欧拉系统 EulerOS-V2.0SP5-x86_64-dvd.part1.rar

    华为欧拉系统 EulerOS-V2.0SP5-x86_64-dvd文件分割成 五个 压缩包,必须集齐 五个 文件后才能一起解压一起使用: EulerOS-V2.0SP5-x86_64-dvd.part5.rar ... EulerOS-V2.0SP5-x86_64-dvd.part4.rar ...

    华为欧拉系统 EulerOS-V2.0SP5-x86_64-dvd.part2.rar

    华为欧拉系统 EulerOS-V2.0SP5-x86_64-dvd文件分割成 五个 压缩包,必须集齐 五个 文件后才能一起解压一起使用: EulerOS-V2.0SP5-x86_64-dvd.part5.rar ... EulerOS-V2.0SP5-x86_64-dvd.part4.rar ...

    ProjectEuler1-16代码

    【标题】"ProjectEuler1-16代码"所涉及的知识点主要集中在计算机编程和算法设计上,尤其针对初学者和编程爱好者。Project Euler是一个在线平台,它提供了一系列的数学和计算机科学问题,旨在通过解决这些问题来提升...

    华为欧拉系统 EulerOS-V2.0SP5-x86_64-dvd.part4.rar

    华为欧拉系统 EulerOS-V2.0SP5-x86_64-dvd文件分割成 五个 压缩包,必须集齐 五个 文件后才能一起解压一起使用: EulerOS-V2.0SP5-x86_64-dvd.part5.rar ... EulerOS-V2.0SP5-x86_64-dvd.part4.rar ...

    华为欧拉系统 EulerOS-V2.0SP5-x86_64-dvd.part3.rar

    华为欧拉系统 EulerOS-V2.0SP5-x86_64-dvd文件分割成 五个 压缩包,必须集齐 五个 文件后才能一起解压一起使用: EulerOS-V2.0SP5-x86_64-dvd.part5.rar ... EulerOS-V2.0SP5-x86_64-dvd.part4.rar ...

    华为欧拉系统 EulerOS-V2.0SP5-x86_64-dvd.part5.rar

    华为欧拉系统 EulerOS-V2.0SP5-x86_64-dvd文件分割成 五个 压缩包,必须集齐 五个 文件后才能一起解压一起使用: EulerOS-V2.0SP5-x86_64-dvd.part5.rar ... EulerOS-V2.0SP5-x86_64-dvd.part4.rar ...

    openEuler for risc-v 2203进展与未来规划1

    openEuler RISC-V 版本计划是openEuler社区的一个重要组成部分,旨在为RISC-V架构提供长期支持,包括openEuler 20.03 LTS、openEuler 20.09、openEuler 21.03 内核创新版、openEuler 21.09创新版等。 openEuler ...

    openeuler-lsb-5.0-1.oe2203.src.rpm

    基于openEuler20.03TLS版本编译openGauss源码时需要的软件包: 1. openeuler-lsb-5.0-1.oe2203.src.rpm 2. git-lfs-linux-arm64-v3.3.0.tar.gz 3. flex-2.5.39.tar.bz2

    openEuler-competition/National-Innovation-2021

    openEuler-competition/National-Innovation-2021openEuler-competition/National-Innovation-2021openEuler-competition/National-Innovation-2021openEuler-competition/National-Innovation-2021openEuler-...

    ----euler code---.rar_Euler_euler number

    欧拉数(Euler Number)是数学中一个重要的常数,以其发现者莱昂哈德·欧拉(Leonhard Euler)的名字命名。欧拉数通常表示为'e',其数值约等于2.71828,是一个无理数且超越数。在数学的多个分支中,欧拉数都有广泛的...

    openEuler-22.03-LTS-SP2-netinst-x86-64-dvd.iso

    openEuler-22.03-LTS-SP2-netinst-x86_64-dvd.iso 适用于x86_64平台服务器

    project-euler-源码.rar

    "project-euler-源码.rar" 是一个包含Project Euler问题解决源代码的压缩文件。Project Euler是一个著名的在线数学和计算机科学挑战平台,旨在通过解决一系列具有挑战性的问题来提高编程技巧和数学理解。这些问题...

    openEuler intel-kernel用于启用下一代Intel平台功能 它为英特尔对openEuler软件栈的新平台支持奠

    openEuler intel-kernel是专为增强和优化基于Intel硬件平台的openEuler操作系统设计的一个核心组件。这个项目的主要目标是确保在下一代Intel平台上,openEuler能够充分利用新硬件的功能,提供高效、稳定且安全的运行...

    projecteuler--:(也许)更好的项目欧拉

    "projecteuler--:(也许)更好的项目欧拉"是一个可能指向Project Euler的优化解决方案集。Project Euler是一个在线平台,提供了许多数学和计算机科学相关的挑战问题,旨在通过这些问题来提高编程技能并解决复杂的...

    openEuler-22.03-LTS-SP3-netinst-aarch64-dvd.iso

    openEuler-22.03-LTS-SP3-netinst-aarch64-dvd.iso

    openEuler-22.03-LTS-SP3-x86-64-dvd.zip.003

    openEuler 22.03(openEuler-22.03-LTS-SP3-x86-64-dvd.iso)适用于Linux x86-64系统,文件使用360压缩软件分割成4个压缩包,必须一起下载使用: part1: ...

    openEuler-20.03-LTS-SP2-x86_64-dvd.part2.rar

    openEuler-20.03-LTS-SP2-x86_64-dvd支持鲲鹏及其它多种处理器,文件分割成 5个 压缩包,必须集齐5个 文件后才能一起解压一起使用: openEuler-20.03-LTS-SP2-x86_64-dvd.part5.rar ... openEuler-20.03-LTS-SP2-x86_...

    openEuler-20.03-LTS-SP2-x86_64-dvd.part1.rar

    openEuler-20.03-LTS-SP2-x86_64-dvd支持鲲鹏及其它多种处理器,文件分割成 5个 压缩包,必须集齐5个 文件后才能一起解压一起使用: openEuler-20.03-LTS-SP2-x86_64-dvd.part5.rar ... openEuler-20.03-LTS-SP2-x86_...

    ProjectEuler:ProjectEuler进度-不存在答案

    ProjectEuler ProjectEuler进度-不存在答案 答案是在构造对象时计算的 应该能够运行任何问题文件以获得答案。 解决方案在运行时方面可能不是理想的解决方案,但是所有解决方案都在1分钟的指导原则之内。

    openEuler-22.03-LTS-SP3-x86-64-dvd.zip.002

    openEuler 22.03(openEuler-22.03-LTS-SP3-x86-64-dvd.iso)适用于Linux x86-64系统,文件使用360压缩软件分割成4个压缩包,必须一起下载使用: part1: ...

Global site tag (gtag.js) - Google Analytics