手写系列之判断质数 - 图1


针对质数进行判断,判断一个数是否是质数

方案1

  1. /**
  2. * @author lihh
  3. * @description 判断是否是质数 - 约数只有1与其本身的数就叫质数
  4. * @param {*} nums 数值
  5. * @returns
  6. */
  7. const isPrime = (nums) => {
  8. const temp = nums - 1
  9. let i = 2
  10. for (; i <= temp; i += 1) {
  11. if (nums % i === 0) return false
  12. }
  13. return true
  14. }

方案2

  1. /**
  2. * @author lihh
  3. * @description 判断是否是质数 - 约数只有1与其本身的数就叫质数
  4. * 我们知道,一个数若可以进行因数分解,那么分解时得到的两个数一定是一个小于等于sqrt(n),
  5. * 一个大于等于sqrt(n),据此,并不需要遍历到n-1,遍历到sqrt(n)即可
  6. * @param {*} nums 数值
  7. * @returns
  8. */
  9. const isPrime = (nums) => {
  10. const temp = Math.sqrt(nums)
  11. let i = 2
  12. for (; i <= temp; i += 1) {
  13. if (nums % i === 0) return false
  14. }
  15. return true
  16. }
  • 方案2主要是针对平方根进行优化,缩短了遍历的次数