每日一算法:素数

作者: lio_zero | 来源:发表于2021-04-14 19:29 被阅读0次

质数(Prime number),又称素数,指在大于1的自然数中,除了1和该数自身外,无法被其他自然数整除的数(也可定义为只有1与该数本身两个正因数的数)。

埃拉托斯特尼筛法,简称埃氏筛,也称素数筛。是一种由希腊数学家埃拉托斯特尼所提出的一种简单检定素数的算法。要得到自然数n以内的全部素数,必须把不大于根号n的所有素数的倍数剔除,剩下的就是素数。

JavaScript 实现

使用埃拉托斯特尼筛法(Eratosthenes)产生最多给定数的质数。

  • 2 到给定数字生成一个数组。

  • 使用 Array.prototype.filter() 筛选出可被从 2 到所提供数字的平方根的任何数字整除的值。

const primes = num => {
  let arr = Array.from({ length: num - 1 }).map((x, i) => i + 2) // [2, 3, 4, 5, 6, 7, 8, 9, 10]
  let sqroot = Math.floor(Math.sqrt(num)) // 3
  let numsTillSqroot = Array.from({ length: sqroot - 1 }).map((x, i) => i + 2) // [2, 3]
  numsTillSqroot.forEach(x => (arr = arr.filter(y => y % x !== 0 || y === x)))
  return arr
}

primes(10) // [2, 3, 5, 7]

此示例来自 30 seconds of code 的 primes

Leetcode 相关的素数题目

相关文章

  • 每日一算法:素数

    质数[https://zh.wikipedia.org/wiki/%E8%B4%A8%E6%95%B0](Prim...

  • Android 每日算法:猫扑素数、单词反转

    经典算法集锦,不定时更新 一、素数(质数)算法 定义: 质数(prime number)又称素数,有无限个。质数定...

  • 2019-03-24

    今天写下来,关于筛子算法,计算素数,针对大数的判断。简单写一下算法,假设计算40000以内的素数。 筛子算法, 百...

  • RSA加密解密算法—数论基础

    本章涉及知识点1、素数的定义2、寻找素数算法—短除法3、寻找素数算法—筛选法4、互质关系5、欧拉函数的证明6、欧拉...

  • 素数算法

    寻找素数的算法有很多,最著名应是筛选法,以下是笔者用JavaScript编写的一个找素数的函数,借鉴了各种找素数的...

  • 素数算法

    素数在计算机中经常被运用于计算机安全(密码相关的计算),所以研究一下素数的判断算法是相当有必要的。所以现在就来看一...

  • 产品经理要懂点数学(2)

    关键词:对称加密算法,RSA算法,素数(质数),素数分布,数论。 历史 1976年以前,所有的加密方法都是同一种模...

  • 素数

    素数 素数就是只能被1和其自身整除,且大于1的自然数RSA算法中用到大素数 判断n是否为素数,简单的方法是将n按顺...

  • 【算法】猫扑素数

    求自然数n内所有猫扑素数 猫扑数:指以2开头,后面跟任意个3的十进制数。如:2、23、233等。 素数(质数):在...

  • 求素数算法

    已知前两2为素素,则2×X(X为正整数且X!=0)都为合数。 以此为根据,新建一个Boolean类型的数组,素数则...

网友评论

    本文标题:每日一算法:素数

    本文链接:https://www.haomeiwen.com/subject/bbwklltx.html