我有一个质数数组:
const primes = [3,5,7,11,13,17,19,23,29,31,37,41,43,47,53,59,61,67,71,73,79,83,89,97]
我想在此列表中找到 <= 给定数字的第一个数字。
例如 ... getHighestPrimeNumber(58)
... 应该返回 53,这是具有最大值且小于或等于 58 的质数
预期结果:
getHighestPrimeNumber(58) === 53
getHighestPrimeNumber(53) === 53
getHighestPrimeNumber(52) === 47
我目前的方法是遍历素数,但这是非常低效的,特别是考虑到列表中可能有 10,000 多个数字 - 谢谢
Vanilla JS 或 Lodash 都可以
最佳答案
由于您使用 lodash
标签发布了此内容,仅供引用,由于 _.sortedIndex,此内容微不足道 :
const primes = [3,5,7,11,13,17,19,23,29,31,37,41,43,47,53,59,61,67,71,73,79,83,89,97]
const closestPrime = (n) => {
let index = _.sortedIndex(primes, n)
return primes[index] == n ? primes[index] : primes[index-1]
}
console.log(closestPrime(58))
console.log(closestPrime(53))
console.log(closestPrime(52))
<script src="https://cdnjs.cloudflare.com/ajax/libs/lodash.js/4.17.10/lodash.min.js"></script>
关于JavaScript 在数组中找到第一个 <= 给定数字的数字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53462370/