繁体   English   中英

如何找到大于 const M 的第一个数字?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM