寻找一个公式来检查数字是否是数字3或更大的数字2或更大的乘积

时间:2012-06-08 18:52:52

标签: javascript math if-statement

我正在寻找在IF语句中使用的公式,以确定给定数字是否是数字2或更大的乘积乘以数字3或更大。

例如,6是满足要求的最小数字(2 x 3)。 7不,8做(2×4),9做(3×3),10做(2×5),11不做,12做(2×6)等。

有什么想法吗?

谢谢!

4 个答案:

答案 0 :(得分:5)

听起来像你在做primality testing。你应该查看维基百科文章 - 他们有几种算法可供选择。

希望有所帮助!

答案 1 :(得分:0)

要检查数字是2的倍数,请使用mod(%)运算符。 所以

if((x%2 == 0) || (x%3 == 0) )
   //x is a multiple of 2 or 3

答案 2 :(得分:0)

这找到n的最小因子至少为2,然后找到大于3且大于3的最小因子,一旦得到,它将返回true。

function myFunction(n) {
    if (isNaN(n) || !isFinite(n) || n%1 || n<6) return false;
    var m = Math.sqrt(n);
    for (var i = 2; i <= m; i++) {
        if (n % i == 0) {
            var divided = n / i;
            for (var j = (i > 2) ? i : 3; i <= n / i; i++) {
                if (divided % j == 0) {
                    return true;
                }
            }
        }
    }
    return false;
}

答案 3 :(得分:0)

x需要是两个因素的倍数...(y,z)

flag = false; (boolean. set when found);
for(var y = 2; y < x; y++){
   for(var z = 3; z <= (x/y); z++){
       if(y*z == x){
          flag = true;
       }
   }  
}
if(flag){
  now we know that x meets the requirements
}