javaScript打印n以内的素数——试除法及优化

 素数:只能被1和它本身整除

试除法

 试除法的时间复杂度为O(n*sqrt(n)),空间复杂度为O(1),这已经是一种比较高效的解决方案了。

 n如果不是质数,那么能整除的数一定与根号n。基于此缩小循环比较范围,并且一旦找到可以整除的立即退出循环。

//打印n以内的质数
//素数:只能被1和它本身整除
function printPrimes(target) {for (let i = 2; i <= target; i++) {let count = 0;for (let j = 2; j <= Math.sqrt(i); j++) {if (i % j === 0) {count++;break;}}if (count == 0) {console.log(i);}}
}
printPrimes(1000);

 试除法优化

进一步优化时间复杂度,可以考虑使用更高级的算法,比如埃拉托斯特尼筛法(Sieve of Eratosthenes)。这种算法可以在O(n*log(log(n)))的时间复杂度内找出小于等于n的所有质数,比试除法更加高效。

思想:如果n不是质数,那n^2肯定不是质数,n*(n+m)肯定也不是质数。由此可预先把后面的非质数找出来。n*(n+m-1)和n*(n+m)两个相邻的非质数中间差了n步长。因此第二个循环j+=i。

function printPrimes(target) {let isPrime = new Array(target + 1).fill(true);isPrime[0] = false;isPrime[1] = false;for (let i = 2; i <= Math.sqrt(target); i++) {if (isPrime[i]) {for (let j = i * i; j <= target; j += i) {isPrime[j] = false;}}}for (let i = 2; i <= target; i++) {if (isPrime[i]) {console.log(i);}}
}printPrimes(1000);

 创建target+1长度的数组,数组下标对应1-target范围整数。数组下标0不使用。

初始化默认isPrime都是true。找到i可以整除的数时,改变isPrime为false

从2开始,2是质数,2的平方4肯定不是质数,6、8、10.。。都不是质数

i=3  3s是质数,3的平方9不是质数,9+3不是质数,9+6不是质数。3(3+m)

时间复杂度为O(n*log(log(n))),空间复杂度为O(n)。这种方法在处理大量质数时会比试除法更加高效。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/703624.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

数字签名在游戏里的应用

数字签名是一种电子形式的签名,用于验证数字文档、消息或交易的真实性和完整性。它是基于公钥加密技术,通过使用发送者的私钥来签名文档,然后使用发送者的公钥验证签名的正确性。数字签名不仅能证明信息没有被篡改,也能证明信息的发送者是真实的,因此在很多安全敏感的应用…

2024年 前端JavaScript入门到精通 第四天 笔记

4.1 函数的基本使用以及封装练习 ★ 函数命名规范 4.2 函数的参数以及默认参数 函数的灵魂&#xff01;&#xff01;&#xff01; 4.3 函数封装数组求和案例 4.4 函数返回值return 4.5 函数返回值细节以及上午总结 4.6 函数返回值案例-求最大值和最 4.7 函数复习以及断点进入函…

如何在Linux搭建MinIO服务并实现无公网ip远程访问内网管理界面

文章目录 前言1. Docker 部署MinIO2. 本地访问MinIO3. Linux安装Cpolar4. 配置MinIO公网地址5. 远程访问MinIO管理界面6. 固定MinIO公网地址 前言 MinIO是一个开源的对象存储服务器&#xff0c;可以在各种环境中运行&#xff0c;例如本地、Docker容器、Kubernetes集群等。它兼…

挑战杯 基于机器视觉的12306验证码识别

文章目录 0 简介1 数据收集2 识别过程3 网络构建4 数据读取5 模型训练6 加入Dropout层7 数据增强8 迁移学习9 结果9 最后 0 简介 &#x1f525; 优质竞赛项目系列&#xff0c;今天要分享的是 基于机器视觉的12306验证码识别 该项目较为新颖&#xff0c;适合作为竞赛课题方向…

springboot创建一个简单的web项目

要创建一个简单的Spring Boot Web项目&#xff0c;您可以按照以下步骤进行操作&#xff1a; 首先&#xff0c;您需要安装Java开发环境。确保您已经安装了JDK&#xff08;Java Development Kit&#xff09;&#xff0c;并且已经配置了JAVA_HOME环境变量。 接下来&#xff0c;您…

Inno setup 打包jar包+前端dist+mysql+navicat等应用文件操作

目录 一、 使用exe4j将后端jar包打包成exe应用文件 1.创建一个新的工程 2.选择一个你想要存放的路径 3.进入配置界面 4.选择jar转换exe模式 5.自定义名字和选择输出路径 6.配置初始化 7.配置java环境 8.测试运行结果 二、Inno 打包应用文件exe 1.新建一个工程文件 2…

main函数中argc和argv是什么意思

在C和C中&#xff0c;int main(int argc, char* argv[])语句作为程序的入口&#xff0c;在main函数中常常用到。 argc&#xff1a;argument count&#xff0c;参数的数量。argc是一个整型数&#xff0c;代表传入程序的命令行参数的数量。程序名称是第一个参数&#xff0c;所以…

【hashmap】【将排序之后的字符串作为哈希表的键】【获取 HashMap 中所有值的集合】Leetcode 49 字母异位词分组

【hashmap】【将排序之后的字符串作为哈希表的键】【获取 HashMap 中所有值的集合】Leetcode 49 字母异位词分组 解法1 将排序之后的字符串作为哈希表的键解法2 在解法一的基础上加入了getOrDefault ---------------&#x1f388;&#x1f388;题目链接&#x1f388;&#x1f3…

获取用户信息与token理解

获取用户信息和token是在开发Web应用程序时常见的需求&#xff0c;可以通过以下步骤来实现&#xff1a; 用户登录&#xff1a;用户在应用程序中输入用户名和密码进行登录验证。一旦验证成功&#xff0c;应用程序会生成一个唯一的token&#xff0c;并将其返回给客户端。存储tok…

Nginx http.server.location配置项说明

在 nginx.conf 的 server 块中的 location / { } 部分,你可以配置许多不同的参数来控制如何处理进入的请求和响应。以下是一些常用的 location 块配置参数: proxy_pass: 用于将请求代理到另一个服务器。例如:proxy_pass http://backend_server; proxy_set_header: 用于设置传…

核函数概念

基本概念 核函数是在机器学习领域&#xff0c;尤其是在支持向量机&#xff08;SVM&#xff09;算法中常用到的一个概念。核函数的基本想法是通过一个非线性变换将原始数据映射到一个更高维的空间&#xff0c;在这个新的空间中&#xff0c;原本线性不可分的数据可能变得线性可分…

从零开始手写mmo游戏从框架到爆炸(二十二)— 战斗系统三

导航&#xff1a;从零开始手写mmo游戏从框架到爆炸&#xff08;零&#xff09;—— 导航-CSDN博客 目录 地图设定 战斗引擎 服务端的BattleHandler 客户端的相关handler 战斗场景展示 执行效果 文接上一章。我们把战斗系统demo应用到实际的项目中来。在第十九章&#xf…

AI对话系统app开源

支持对接gpt&#xff0c;阿里云&#xff0c;腾讯云 具体看截图 后端环境&#xff1a;PHP7.4MySQL5.6 软件&#xff1a;uniapp 废话不多说直接上抗揍云链接&#xff1a; https://mny.lanzout.com/iKFRY1o1zusf 部署教程请看源码内的【使用教程】文档 欢迎各位转载该帖/源码

智慧公厕是什么?智慧公厕意义何在

随着城市化进程的加速&#xff0c;公厕成为城市管理中不容忽视的一环。智慧公厕传统的公厕管理方式已经无法满足当今社会的需求&#xff0c;因此智慧公厕的出现成为解决问题的利器。什么是智慧公厕&#xff1f;智慧公厕是实现公共厕所信息化、数字化、智慧化全方位管理与服务的…

啤酒:精酿啤酒与烧烤的热烈碰撞

在夏日的傍晚&#xff0c;烧烤与啤酒总是绝配。当Fendi Club啤酒遇上烧烤&#xff0c;它们将为我们带来一场热烈的美味碰撞。 Fendi Club啤酒&#xff0c;以其醇厚的口感和淡淡的麦芽香气而著称。这款啤酒在酿造过程中采用了特别的工艺&#xff0c;使得酒体呈现出诱人的金黄色&…

F2图例封装 - Bar

基于vue3 和 F2 3.5.0 <template><div :style"{minHeight: ${height}px,width: 100% }" ref"container"><canvas v-show"showChart" :id"chartId" class"chart-canval"></canvas><empty-box v-…

零感佩戴的开放式耳机,音质悦耳更耐听,西圣Air体验

每天都用蓝牙耳机的朋友应该不少&#xff0c;我平时也经常戴&#xff0c;不过最近我用的不是常规的入耳式耳机&#xff0c;因为它佩戴不舒适&#xff0c;戴久了耳朵特别难受。所以现在我换上了开放式耳机&#xff0c;这种耳机叫做OWS&#xff0c;我的这款是西圣Air&#xff0c;…

查看mysql数据库的版本

要查看MySQL数据库的版本&#xff0c;可以使用以下几种方法&#xff1a; 命令行&#xff08;已连接到MySQL服务器&#xff09;&#xff1a; 登录到MySQL服务器后&#xff0c;在MySQL提示符下执行&#xff1a; mysql> SELECT VERSION(); 或者&#xff0c;也可以执行 STATUS; …

Zynq(音标可以是zɪŋk)中的PS和PL

在 Zynq 架构下&#xff0c;"PS" 和 "PL" 分别指代 SoC&#xff08;System on Chip&#xff09;中的两个主要部分。 PS&#xff08;Processing System&#xff09;&#xff1a;它是 Zynq SoC 中的处理系统部分&#xff0c;包括 ARM Cortex-A 系列处理器核…

Java异常梳理总结

目录 什么是异常 , 异常的分类 ? 异常的基本概念 什么是Throwable ? Throwable 类常用方法有哪些&#xff1f; Exception 和 Error 有什么区别&#xff1f; 运行时异常与一般异常有什么区别&#xff1f; 常见的RuntimeException 有哪些 ? NoClassDefFoundError 和 C…