javascript - JavaScript在数组中找到<=给定数字的第一个数字
问题描述
我有一个素数数组:
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 都可以
解决方案
既然你用标签发布了这个,仅供参考,由于_.sortedIndexlodash
,这很简单:
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>
推荐阅读
- python - 计算数据框中具有多列的成对行中的常见元素
- python - 减少 Google App Engine 部署时间?
- javascript - Javascript "+" 和 "-" 运算符的行为和用法
- postgresql - 使用 Prisma Migrate 运行集成测试时出错
- postgresql - 搜索 bigint 数组 posgreSQL 中是否存在任何子查询 bigint
- python - 为什么这会返回错误的最大值?
- python - Python:如何从特定行/列/行读取数据
- facebook - 如何添加缩略图预定的实时视频 facebook
- python - “详细信息”:“方法 \”GET\“ 不允许。” Django 休息框架
- google-apps-script - Google 电子表格中的数据验证