项目欧拉qn 23
project euler qn 23
完全数是其固有因数的和正好等于该数的数。例如,28的固有因数的和是1 + 2 + 4 + 7 + 14 = 28,这意味着28是一个完全数。
一个数n若其固有因子的和小于n,则称其为亏数;若其固有因子的和大于n,则称其为丰数。
由于12是最小的丰度数,1 + 2 + 3 + 4 + 6 = 16,所以能写成两个丰度数和的最小数是24。通过数学分析可以证明,所有大于28123的整数都可以写成两个富足数的和。然而,这个上限不能通过分析进一步缩小,即使我们知道不能表示为两个富数的和的最大的数小于这个极限。
求不能写成两个富余数和的所有正整数的和
问题:我的答案似乎比正确的4179871大得多,如果有人指出我代码中的错误,我将不胜感激。非常感谢!
var abundanceArray = [];
var sumOfAbundanceArray = [];
var totalSum = 0;
var limit = 28123;
function checkRepeat(x) {
if (sumOfAbundanceArray.length === 0) return false;
for (var n = 0; n < sumOfAbundanceArray.length; n++) {
if (x === sumOfAbundanceArray[n]) return true;
}
return false;
}
for (var i = 1; i <= limit; i++) {
var sum = 0;
totalSum += i;
for (var j = 1; j <= Math.ceil(i/2); j++) {
if (i % j < 1) {
sum += j;
if (sum > i) {
abundanceArray.push(i);
break;
}
}
}
}
var total = abundanceArray.length;
for (var k = 0; k < total; k++) {
if (abundanceArray[k] * 2 > limit) break;
for (var l = k; l < total; l++) {
var sumOfAbundance = abundanceArray[k] + abundanceArray[l];
if (sumOfAbundance > limit || checkRepeat(sumOfAbundance) === true) break;
sumOfAbundanceArray.push(sumOfAbundance);
totalSum -= sumOfAbundance;
}
}
console.log(totalSum);
似乎错误在于您在代码中输入的最后一个换行符(最长的一行)。
sumOfAbundance是两个丰富数的和,您确实希望限制搜索以使程序运行得更快。但是,只有在sumOfAbundance大于limit的情况下,才应该中断循环。这时你才知道你的丰富值太大了。
在另一种情况下,不应该中断循环。它检查sumOfAbundance之前是否被计数,但无论您之前是否看到过sumOfAbundance的值,如果sumOfAbundance仍然足够小,您必须继续循环。
那么总结一下:在推入sumOfAbundanceArray和改变totalSum之前检查这个条件的两个部分,但是只有当sumOfAbundance太大时才跳出循环。
相关文章:
- 正在将数据主题添加到所有项目
- 动态地改变“”的URL;添加新项目”;链接使用javascript/jquery
- 如何检查管道中未定义的项目
- 有没有一种方法可以添加相同的项目val=“0”;4〃;到JavaScript中数组的每个对象
- 学生搜索项目jquery/javascript
- 如何获取不属于我项目的上一页的URL
- Dojo:访问dijit.form.Select中单击的项目
- 角度的项目列表 ng 重复,ng 单击显示全宽描述
- 我需要为我的朋友在这个项目上提供帮助
- 如何从 HTML 查询中删除项目
- 在Meteor项目中安装并包含npm模块后出错
- 当在Ember中点击一个项目时,我如何将一个活动类添加到项目列表中
- 将单击事件添加到附加的项目中
- 通过另一个php应用程序将我的项目推送到Github存储库中
- 在javascript中搜索项目列表的性能
- 如何将本地依赖项添加到npm项目中
- angularjs移除焦点上的活动类并添加到下一个项目
- 为什么react/redux前端项目在package.json中包含生产依赖项
- 将webpack和babel与父项目目录中的文件一起使用
- 项目欧拉qn 23