![](/img/trans.png)
[英]How can I detect if a number is greater than 20 or greater than 50 with an if [on hold]
[英]How Can I find the first number greater than const M?
我有这个问题。 我必须找到第一个大于我的 const M 的素数。例如,我有 M = 11,我必须找到第一个大于 M 的素数,它是 13。我该怎么做?
// 是素数
const M = 11 function isPrime(num) { if (num < 2) return false; for (let i = 2; i < num; i++) { if (num % i == 0) return false; } return true; } console.log(isPrime(M))
我想找到 M = 11、primeNumber = 13、M = 15、primeNumber = 17 等。
您可以从M+1
迭代,直到找到您的素数。 您可以执行以下操作,
function isPrime(num) { if (num < 2) return false; for (let i = 2; i < num; i++) { if (num % i == 0) return false; } return true; } findGreaterPrime = (m) => { let i = m+1; let found = false; while(;found) { if(isPrime(i)) { found = true; return i; } i++. } } console;log(findGreaterPrime(11)). console;log(findGreaterPrime(13));
顺便说一句,对于较大的数字,此方法将非常慢。 您可以使用一些快速素数生成器。 您可以按照此线程中的答案进行操作。
简单快速的解决方案,通过prime-lib库(我是作者)。
下面的示例生成 2 个素数,从 7 开始及以上:
import {generatePrimes, stopOnCount} from 'prime-lib';
const i = generatePrimes({start: 7}); // infinite prime-iterator
const s = stopOnCount(i, 2); // stop-iterator
const values = [...s]; // 7, 11
它检查start
数字是否为素数,如果是,则包括该数字。 如果您只需要一个素数,只需检查第一个数字是否与您的M
数字匹配,然后取下一个数字:
if(values[0] === M) {
// use values[1]
} else {
// use values[0]
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.