我正在寻找在 IF 语句中使用的公式来确定给定数字是否是数字 2 或更大乘以数字 3 或更大的乘积。
例如,6 是满足要求的最小数字 (2 x 3)。7 没有,8 有 (2 x 4),9 有 (3 x 3),10 有 (2 x 5),11 没有,12 有 (2 x 6),等等。
有任何想法吗?
谢谢!
我正在寻找在 IF 语句中使用的公式来确定给定数字是否是数字 2 或更大乘以数字 3 或更大的乘积。
例如,6 是满足要求的最小数字 (2 x 3)。7 没有,8 有 (2 x 4),9 有 (3 x 3),10 有 (2 x 5),11 没有,12 有 (2 x 6),等等。
有任何想法吗?
谢谢!
听起来你在做素数测试。您应该查看 Wikipedia 文章 - 他们有几种算法可供选择。
希望有帮助!
要检查一个数字是否为 2 的倍数,请使用 mod (%) 运算符。所以
if((x%2 == 0) || (x%3 == 0) )
//x is a multiple of 2 or 3
这会找到 n 至少为 2 的最小因子,然后找到大于该因子且大于 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;
}
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
}