javascript - 为什么这个函数只返回零和一?欧拉项目 JavaScript

标签 javascript

此函数适用于项目 Euler #45。我试图找到的是,为什么如果我使用整数就可以工作的函数,如果我使用变量来表示该整数则无法工作。换句话说,该函数的值 (i) 仅返回 0 和 1。

function tri(n) {
    return (n*(n+1))/2;

}

function pent(n) {
return (n*(3*n-1))/2;
}

function hex(n) {
    return (n*(2*n-1));
}


for (i=0;i<10000;i++) {
    if (tri(i) === pent(i) && pent(i) === hex(i)) {
        console.log(tri(i));
    }
}

最佳答案

您只记录了 0 和 1,因为这些是这三个函数的结果相同(0 或 1)的唯一数字。对于所有其他数字,这三个函数返回不同的值。

对于该 Project Euler 问题,您不应该找到每个函数值相同的 i 值。您应该找到出现在所有三个序列中的值。它们不必出现在每个序列中的同一点。

解决该问题的一种方法是想象从一开始就向上移动 T、P 和 H 数字的列表。每个列表中的第一个值是 1。现在,由于它们相同,因此为每个列表生成另一个数字。现在的值是 3、5 和 6。从现在开始,您可以为列表生成一个新值,其当前值是这三个值中最小的一个。 (如果平局,则任意选择一个列表。)这样,您就可以一次将每个列表向上移动一个新值。有时您可能会生成两个 T 值而不生成另一个 P 或 H 值,但这没关系。最终,您会遇到每个列表上的最大值相同的情况,即使列表的长度不同。

欧拉计划的挑战性和拓展思维的方面是你自己思考解决问题的方法。我还会指出,许多问题都是经典的数论问题,其中一些问题的解决方案令人惊讶。如果你没有学过数论,你不应该因为没有弄清楚这些而感到难过;最先得到解决方案的人是像欧拉和高斯这样的人。

关于javascript - 为什么这个函数只返回零和一?欧拉项目 JavaScript,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20999251/

相关文章:

javascript - AngularJS ng-repeat 示例不起作用

javascript - PHP 转换日期格式

javascript - Typeahead.js:页脚查询如何工作?

javascript - 通过更新 react CSS 过渡不一致

javascript - 没有获取点击名称的id

Javascript 目录中的随机图像

javascript - 为什么需要变量名 "$scope"?

javascript - 更改元素上的 HTML 时的事件监听器

javascript - 在原始动画之后创建动画而没有烦人的剪辑

javascript - 为 Javascript 预加载的本地数据库后端(可能吗?)