javascript – 试图在JS中查找数字的因子

前端之家收集整理的这篇文章主要介绍了javascript – 试图在JS中查找数字的因子前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我刚刚开始学习JS,并理解找到一个因素的概念.但是,这段代码就是我到目前为止所拥有的.我有str变量,只输出第一个因素,即2.我试图将每个(int)添加到str作为因素列表.下面的代码片段有什么问题?
function calculate(num) {
    var str = "";
    var int = 2;
    if (num % int == 0) {
        str = str + int;
        int++;
    } else {
        int++;
    }
    alert(str);
}

calculate(232);

解决方法

@ Moob的回答是正确的.你必须使用一个循环.但是,您可以通过确定每个数字是偶数还是奇数来加快过程.奇怪的数字不需要像evens那样检查每个数字.可以针对每个其他数字检查奇数.此外,我们不需要检查过去给定数字的一半,因为上半部分都不会起作用.排除0并从1开始:
function calculate(num) {

    var half = Math.floor(num / 2),// Ensures a whole number <= num.
        str = '1',// 1 will be a part of every solution.
        i,j;

    // Determine our increment value for the loop and starting point.
    num % 2 === 0 ? (i = 2,j = 1) : (i = 3,j = 2);

    for (i; i <= half; i += j) {
        num % i === 0 ? str += ',' + i : false;
    }

    str += ',' + num; // Always include the original number.
    alert(str);
}

calculate(232);

http://jsfiddle.net/r8wh715t/

虽然我理解在您的特定情况下(计算232),计算速度不是一个因素(< - 没有双关语意),但对于较大数量或多次计算可能是一个问题.我在Project Euler problem #12工作,我需要这种类型的功能,计算速度至关重要.

猜你在找的JavaScript相关文章