JavaScript判断数字是否为质数的方法汇总

JavaScript判断数字是否为质数的方法汇总

判断数字是否为质数是一个常见的算法问题,针对这一问题,我们可以有多种方法来解决。

什么是质数

所谓质数,就是只能被 1 和自身整除的正整数。例如:2、3、5、7、11、13、17、19、23、29、31、37等等。

方法一:暴力枚举法

暴力枚举法,即从2开始,依次枚举到 Math.sqrt(n) 就能判断出一个数是否是质数。

function isPrime(num) {
  if(num <= 1) return false; // 1不是质数
  for(let i = 2; i <= Math.sqrt(num); i++) {
    if(num % i == 0) return false;
  }
  return true;
}

console.log(isPrime(17)) // true
console.log(isPrime(27)) // false

上面的代码中,我们先判定num是否小于等于1,如果是,直接返回false(1不是质数)。然后使用循环从2开始,到 Math.sqrt(num)结束,如果在循环中发现某个数字能够整除num,就说明num不是质数,直接返回false。如果一直到循环结束也没有返回false,则说明num是质数。

方法二:埃氏筛法

埃氏筛法,又叫做厄拉多塞筛法,是一种筛选素数的方法。该方法的基本思路是:先确定需要求出质数的范围 n,然后申请一个长度为 n+1 的布尔类型数组,数组值全部初始化为 true,表示所有数字都是质数。然后从 2 开始枚举,若当前数字为素数,则从它的平方开始,将后续所有该数的倍数都标记为非素数。

function getPrime(n) {
  let arr = []
  for(let i = 0; i <= n; i++) {
    arr[i] = true
  }
  for(let i = 2; i * i <= n; i++) {
    if(arr[i]) {
      for(let j = i * i; j <= n; j += i) {
        arr[j] = false
      }
    }
  }
  let res = []
  for(let i = 2; i <= n; i++) {
    if(arr[i]) {
      res.push(i)
    }
  }
  return res
}

console.log(getPrime(20)) // [2, 3, 5, 7, 11, 13, 17, 19]

上面的代码中,我们首先创建一个长度为n+1的数组arr,数组中的值全部设为true,表示所有数字都是质数。然后从2开始枚举,若当前数字为素数,则从它的平方开始,将后续所有该数的倍数都标记为非素数。最后,再遍历一遍数组arr,如果arr[i]为true,表示i是一个质数,就将其加入到结果数组中。

总结

以上,就是JavaScript判断数字是否为质数的两种方法,暴力枚举法和埃氏筛法。其中,暴力枚举法简单易懂,容易实现,但效率不高,适用于小规模数据的处理。而埃氏筛法虽然稍微有些复杂,但其时间复杂度为O(nloglogn),效率比较高,适用于大规模数据的处理。

希望通过本文的介绍,您对判断数字是否为质数的方法有了更加深入的了解。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:JavaScript判断数字是否为质数的方法汇总 - Python技术站

(0)
上一篇 2023年5月28日
下一篇 2023年5月28日

相关文章

  • 原生javascript实现的分页插件pagenav

    下面我就为您详细讲解如何使用原生Javascript实现一个分页插件pagenav。 一、准备工作 在开始之前,我们需要准备以下工作: 在HTML文件中引入pagenav.css和pagenav.js文件。 准备一个HTML占位容器用于显示分页内容。 准备一个和后台返回数据对应的分页数据对象,其中包含当前页码、每页显示条数、数据总条数等信息。 二、编写分页h…

    jquery 2023年5月27日
    00
  • jQuery中判断对象是否存在的方法汇总

    题目中提到了“jQuery中判断对象是否存在的方法汇总”,这涉及到了jQuery中非常重要的一个概念——选择器,选中页面上的元素,判断元素是否存在。下面本文将详细讲解一些jQuery中判断对象是否存在的方法以及示例说明: 一、$()选择器 $()选择器是jQuery中最常用的选择器,它可以用来选取文档中的元素。当选中的元素不存在时,$()选择器会返回一个空的…

    jquery 2023年5月28日
    00
  • THREE.JS入门教程(1)THREE.JS使用前了解

    THREE.JS入门教程(1)THREE.JS使用前了解 什么是THREE.JS THREE.JS是JavaScript编写的WebGL第三方库,它可以让我们轻松地在浏览器上创建有趣的3D场景和模型,是一个非常流行的3D游戏和图形应用开发工具。 THREE.JS前置知识 在学习THREE.JS之前,需要掌握以下技能: HTML、CSS和JavaScript基…

    jquery 2023年5月27日
    00
  • jQWidgets jqxTreeGrid columnsHeight属性

    jqxTreeGrid 是 jQWidgets 提供的一个树形表格组件,它可以展示层级结构的数据。jqxTreeGrid 组件有一个 columnsHeight 属性,用于设置表格列的高度。下面是 columnsHeight 属性的详细讲解和示例说明: columnsHeight 属性 columnsHeight 属性用于设置表格列的高度。它可以接受一个数字…

    jquery 2023年5月11日
    00
  • jQuery Mobile Popup Widget的arrow选项

    以下是关于jQuery Mobile popup小部件的arrow选项的完整攻略: arrow选项是什么? arrow选项是jQuery Mobile中的一个选项,它用于控制弹出窗口的箭头是否显示。如果设置为true,则箭头将显示在弹出窗口的顶部中心。如果设置为false,则箭头将不会显示。 如何使用arrow选项? 可以使用以下代码来设置arrow选项: …

    jquery 2023年5月11日
    00
  • jQuery+HTML5实现手机摇一摇换衣特效

    下面是详细讲解“jQuery+HTML5实现手机摇一摇换衣特效”的完整攻略: 一、需求分析 实现手机摇一摇效果,即用户在手机上通过摇晃手机来更换衣服。 利用jQuery和HTML5技术实现该效果。 二、方案设计 确定页面布局:可以使用HTML5的canvas标签来绘制衣服,界面设计采用div实现。 通过jQuery实现手机摇晃的监测,来触发更换衣服的效果。 …

    jquery 2023年5月28日
    00
  • jBox 2.3基于jquery的最新多功能对话框插件 常见使用问题解答

    jBox 2.3基于jquery的最新多功能对话框插件 常见使用问题解答 jBox是一款基于jQuery的多功能对话框插件,适用于包括确认框、提示框、模态框、气泡框等多种对话框场景。要使用jBox插件,需要先引入jQuery库和jBox插件脚本。 常见使用问题解答 1. 如何创建确认框? 确认框用于让用户确认某个操作,通常包含“确定”和“取消”两个按钮。创建…

    jquery 2023年5月28日
    00
  • bootstrap multiselect下拉列表功能

    下面是关于“bootstrap multiselect下拉列表功能”的完整攻略: 概述 Bootstrap Multiselect 是一个基于 Bootstrap 的下拉列表插件,它提供了允许多选的下拉列表功能和一些设定项。 使用 Bootstrap Multiselect 时,首先需要引入必要的 CSS 和 JS 文件。如果使用 npm 安装,在 HTML…

    jquery 2023年5月27日
    00
合作推广
合作推广
分享本页
返回顶部