当前位置: 首页 > news >正文

求从2开始的第n个素数

方法一:暴力法

  • 思路:从2开始,逐个判断每个数是否为素数。素数是除了1和它自身外,不能被其他自然数整除的数。对于每个数m,从2到sqrt(m)遍历,如果能被整除则不是素数。当找到n个素数时停止。

  • C++ 代码如下

#include <iostream>
#include <cmath>
using namespace std;bool isPrime(int num) {if (num <= 1) return false;if (num <= 3) return true;if (num % 2 == 0 || num % 3 == 0) return false;/*for (int i = 5; i * i <= num; i = i + 6) {if (num % i == 0 || num % (i + 2) == 0) return false;}*/for(int i=5;i*i<=num;i++){if(num%i==0) return false;}return true;
}int nthPrime(int n) {int count = 0;int num = 2;while (true) {if (isPrime(num)) {count++;if (count == n) return num;}num++;}return -1;
}int main() {int n;cout << "Enter the value of n: ";cin >> n;cout << "The " << n << "th prime number is: " << nthPrime(n) << endl;return 0;
}

方法二:埃氏筛法(Sieve of Eratosthenes)改进

  • 思路:先创建一个足够大的布尔数组来标记数是否为素数。从2开始,将2的倍数标记为非素数,然后找到下一个未标记的数(即素数),重复这个过程。当找到n个素数时,可以得到第n个素数的值。

  • C++ 代码如下

#include <iostream>
#include <vector>
using namespace std;int nthPrime(int n) {if (n == 1) return 2;int scope = 100;int x = (int)(scope / log(scope));while (x < n) {scope++;x = (int)(scope / log(scope));}cout<< "scope: " << scope << endl;vector<bool> isPrime(scope, true);  // 假设一个较大的范围,可根据需要调整//vector<bool> isPrime(1000000, true);  // 假设一个较大的范围,可根据需要调整isPrime[0] = isPrime[1] = false;int count = 0;for (int i = 2; i < isPrime.size(); i++) {if (isPrime[i]) {count++;if (count == n) return i;for (int j = i * i; j < isPrime.size(); j += i) {isPrime[j] = false;}}}return -1;
}int main() {int n;cout << "Enter the value of n: ";cin >> n;cout << "The " << n << "th prime number is: " << nthPrime(n) << endl;return 0;
}

这两种方法中,埃拉托斯特尼筛法在处理较大的n值时效率更高,因为它避免了对许多数的重复判断。但需要注意内存使用情况,如果n非常大,可能需要更复杂的数据结构或算法优化。

拓展与总结:

  • 从不大于 n 的自然数随机选一个,它是素数的概率大约是 1 / l n ( n ) 1/ln(n) 1/ln(n)
    所以范围为n以内的素数个数为 n / l n ( n ) n/ln(n) n/ln(n) ,在n->无穷时成立,其他情况下近似成立。

  • 比如求第100个素数,设num的范围是x,则必须满足 x / l n ( x ) > = 100 x/ln(x)>=100 x/ln(x)>=100 ,解出的这个x才是我们需要的范围,在这个范围内我们才能找到第100个素数。

相关文章:

求从2开始的第n个素数

方法一&#xff1a;暴力法 思路&#xff1a;从2开始&#xff0c;逐个判断每个数是否为素数。素数是除了1和它自身外&#xff0c;不能被其他自然数整除的数。对于每个数m&#xff0c;从2到sqrt(m)遍历&#xff0c;如果能被整除则不是素数。当找到n个素数时停止。 C 代码如下&am…...

【Android】View—基础知识,滑动,弹性滑动

基础知识 什么是View 在 Android 中&#xff0c;View 是用户界面&#xff08;UI&#xff09;中的基本组件&#xff0c;用于绘制图形和处理用户交互。所有的 UI 组件&#xff08;如按钮、文本框、图片等&#xff09;都是 View 的子类。可以说&#xff0c;View 是构建 Android …...

MYSQL中的两种转义操作

在 MySQL 中&#xff0c;转义字符用于处理特殊字符,以防止语法错误或 SQL 注入攻击,而单双引号都是需要重点注意的字符 可以用转义符\ 和 两个连续的引号 来起到转义引号的作用 转义符转义: 这是users表中的数据 如果查询admin 或者 admin" 用户,可以用转义符\ 两个连…...

力扣题目解析--删除链表的倒数第n个节点

题目 给你一个链表&#xff0c;删除链表的倒数第 n 个结点&#xff0c;并且返回链表的头结点。 示例 1&#xff1a; 输入&#xff1a;head [1,2,3,4,5], n 2 输出&#xff1a;[1,2,3,5]示例 2&#xff1a; 输入&#xff1a;head [1], n 1 输出&#xff1a;[]示例 3&…...

Knowledge Graph-Enhanced Large Language Models via Path Selection

研究背景 研究问题&#xff1a;这篇文章要解决的问题是大型语言模型&#xff08;LLMs&#xff09;在生成输出时存在的事实不准确性&#xff0c;即所谓的幻觉问题。尽管LLMs在各种实际应用中表现出色&#xff0c;但当遇到超出训练语料库范围的新知识时&#xff0c;它们通常会生…...

Android 项目模型配置管理

Android 项目配置管理 项目模型相关的配置管理config.gradle文件&#xff1a;build.gradle文件&#xff1a; 参考地址 项目模型相关的配置管理 以下是一个完整的build.gradle和config.gradle示例&#xff1a; config.gradle文件&#xff1a; ext {// 模型相关配置&#xff0…...

「QT」几何数据类 之 QSizeF 浮点型尺寸类

✨博客主页何曾参静谧的博客&#x1f4cc;文章专栏「QT」QT5程序设计&#x1f4da;全部专栏「VS」Visual Studio「C/C」C/C程序设计「UG/NX」BlockUI集合「Win」Windows程序设计「DSA」数据结构与算法「UG/NX」NX二次开发「QT」QT5程序设计「File」数据文件格式「PK」Parasolid…...

Essential Cell Biology--Fifth Edition--Chapter one(2)

1.1.1.3 Living Cells Are Self-Replicating Collections of Catalysts 催化剂集合 生物最常被引用的特性之一是它们的繁殖能力。对于细胞来说&#xff0c;这个过程包括复制它们的遗传物质和其他成分&#xff0c;然后分裂成两个&#xff0c;产生一对子细胞[daughter cells]&a…...

大语言模型LLMs在医学领域的最新进展总结

我是娜姐 迪娜学姐 &#xff0c;一个SCI医学期刊编辑&#xff0c;探索用AI工具提效论文写作和发表。 相比其他学科&#xff0c;医学AI&#xff0c;是发表学术成果最多的领域。 医学数据的多样性和复杂性&#xff08;包括文本、图像、基因组数据等&#xff09;&#xff0c;使得…...

云防护单节点2T抗攻击能力意味着什么?

随着互联网的发展&#xff0c;DDoS攻击的规模和频率不断增加&#xff0c;对企业和个人用户的网络服务造成了严重威胁。云防护服务作为一种高效的DDoS防护手段&#xff0c;逐渐成为许多企业的首选。本文将重点讨论云防护单节点2T&#xff08;太比特每秒&#xff09;抗攻击能力的…...

IDEA在编译时: java: 找不到符号符号: 变量 log

一、问题 IDEA在编译的时候报Error:(30, 17) java: 找不到符号符号: 变量 log Error:(30, 17) java: 找不到符号 符号: 变量 log 位置: 类 com.mokerson.rabbitmq.config.RabbitMqConfig 二、解决方案 背景&#xff1a;下载其他同事代码时&#xff0c;第一次运行&#xff0c…...

HTML 基础架构:理解网页的骨架

HTML的文档结构主要由以下几个部分组成&#xff1a;<html>、<head>和<body>。 <html>标签是HTML文档的根元素&#xff0c;用来包裹整个HTML文档的内容。<head>标签用于定义文档的头部&#xff0c;包含了一些元数据和其他不直接显示在页面上的内…...

FPGA学习笔记#5 Vitis HLS For循环的优化(1)

本笔记使用的Vitis HLS版本为2022.2&#xff0c;在windows11下运行&#xff0c;仿真part为xcku15p_CIV-ffva1156-2LV-e&#xff0c;主要根据教程&#xff1a;跟Xilinx SAE 学HLS系列视频讲座-高亚军进行学习 从这一篇开始正式进入HLS对C代码的优化笔记 目录 1.循环优化中的基…...

web实操4——servlet体系结构

servlet体系结构 我们基本都只实现service方法&#xff0c;其余几个都不用&#xff0c; 之前我们直接实现servlet接口&#xff0c;所有的方法都必须实现&#xff0c;不用也得写&#xff0c;不然报错&#xff0c;写了又不用当摆设。 能不能只要定义一个service方法就可以&…...

Linux开发讲课48--- Linux 文件系统概览

本文旨在高屋建瓴地来讨论 Linux 文件系统概念&#xff0c;而不是对某种特定的文件系统&#xff0c;比如 EXT4 是如何工作的进行具体的描述。另外&#xff0c;本文也不是一个文件系统命令的教程。 每台通用计算机都需要将各种数据存储在硬盘驱动器&#xff08;HDD&#xff09;…...

Node.js 模块详解

模块的概念 Node.js 运行在 V8 JavaScript 引擎上&#xff0c;通过 require() 函数导入相关模块来处理服务器端的各种进程。一个 Node.js 模块可以是一个函数库、类集合或其他可重用的代码&#xff0c;通常存储在一个或多个 .js 文件中。 例如&#xff0c;启动一个 Node.js 服…...

大厂面试真题-说说tomcat的优缺点

Tomcat作为服务器&#xff0c;特别是作为Java Web服务器&#xff0c;具有一系列优点和缺点。以下是对其优缺点的详细分析&#xff1a; 优点 开源免费&#xff1a; Tomcat是一个免费、开源的Web服务器&#xff0c;用户可以在任何环境下自由使用&#xff0c;无需支付任何费用。…...

Linux系统编译boot后发现编译时间与Windows系统不一致的解决方案

现象 如下图&#xff0c;从filezilla软件看虚拟机Linux中编译的uboot.img修改时间与Windows系统时间不同 解决过程 在Linux中查看编译的uboot详细信息&#xff0c;从而得到编译时间。终端输入ls -l后&#xff0c;如下图&#xff1a; 结论 说明在Linux是按照Windows系统时…...

WPS Office手机去广高级版

工具介绍功能特点 WPS Office是使用人数最多的移动办公软件&#xff0c;独有手机阅读模式&#xff0c;字体清晰翻页流畅&#xff1b;完美支持文字&#xff0c;表格&#xff0c;演示&#xff0c;PDF等51种文档格式&#xff1b;新版本具有海量精美模版及高级功能 安装环境 [名称…...

Python爬虫基础-正则表达式!

前言 正则表达式是对字符串的一种逻辑公式&#xff0c;用事先定义好的一些特定字符、及这些特定字符的组合&#xff0c;组成一个“规则的字符串”&#xff0c;此字符串用来表示对字符串的一种“过滤”逻辑。正在在很多开发语言中都存在&#xff0c;而非python独有。对其知识点…...

HTML 语义化

目录 HTML 语义化HTML5 新特性HTML 语义化的好处语义化标签的使用场景最佳实践 HTML 语义化 HTML5 新特性 标准答案&#xff1a; 语义化标签&#xff1a; <header>&#xff1a;页头<nav>&#xff1a;导航<main>&#xff1a;主要内容<article>&#x…...

论文解读:交大港大上海AI Lab开源论文 | 宇树机器人多姿态起立控制强化学习框架(二)

HoST框架核心实现方法详解 - 论文深度解读(第二部分) 《Learning Humanoid Standing-up Control across Diverse Postures》 系列文章: 论文深度解读 + 算法与代码分析(二) 作者机构: 上海AI Lab, 上海交通大学, 香港大学, 浙江大学, 香港中文大学 论文主题: 人形机器人…...

ubuntu搭建nfs服务centos挂载访问

在Ubuntu上设置NFS服务器 在Ubuntu上&#xff0c;你可以使用apt包管理器来安装NFS服务器。打开终端并运行&#xff1a; sudo apt update sudo apt install nfs-kernel-server创建共享目录 创建一个目录用于共享&#xff0c;例如/shared&#xff1a; sudo mkdir /shared sud…...

盘古信息PCB行业解决方案:以全域场景重构,激活智造新未来

一、破局&#xff1a;PCB行业的时代之问 在数字经济蓬勃发展的浪潮中&#xff0c;PCB&#xff08;印制电路板&#xff09;作为 “电子产品之母”&#xff0c;其重要性愈发凸显。随着 5G、人工智能等新兴技术的加速渗透&#xff0c;PCB行业面临着前所未有的挑战与机遇。产品迭代…...

【WiFi帧结构】

文章目录 帧结构MAC头部管理帧 帧结构 Wi-Fi的帧分为三部分组成&#xff1a;MAC头部frame bodyFCS&#xff0c;其中MAC是固定格式的&#xff0c;frame body是可变长度。 MAC头部有frame control&#xff0c;duration&#xff0c;address1&#xff0c;address2&#xff0c;addre…...

解决Ubuntu22.04 VMware失败的问题 ubuntu入门之二十八

现象1 打开VMware失败 Ubuntu升级之后打开VMware上报需要安装vmmon和vmnet&#xff0c;点击确认后如下提示 最终上报fail 解决方法 内核升级导致&#xff0c;需要在新内核下重新下载编译安装 查看版本 $ vmware -v VMware Workstation 17.5.1 build-23298084$ lsb_release…...

为什么需要建设工程项目管理?工程项目管理有哪些亮点功能?

在建筑行业&#xff0c;项目管理的重要性不言而喻。随着工程规模的扩大、技术复杂度的提升&#xff0c;传统的管理模式已经难以满足现代工程的需求。过去&#xff0c;许多企业依赖手工记录、口头沟通和分散的信息管理&#xff0c;导致效率低下、成本失控、风险频发。例如&#…...

家政维修平台实战20:权限设计

目录 1 获取工人信息2 搭建工人入口3 权限判断总结 目前我们已经搭建好了基础的用户体系&#xff0c;主要是分成几个表&#xff0c;用户表我们是记录用户的基础信息&#xff0c;包括手机、昵称、头像。而工人和员工各有各的表。那么就有一个问题&#xff0c;不同的角色&#xf…...

ESP32 I2S音频总线学习笔记(四): INMP441采集音频并实时播放

简介 前面两期文章我们介绍了I2S的读取和写入&#xff0c;一个是通过INMP441麦克风模块采集音频&#xff0c;一个是通过PCM5102A模块播放音频&#xff0c;那如果我们将两者结合起来&#xff0c;将麦克风采集到的音频通过PCM5102A播放&#xff0c;是不是就可以做一个扩音器了呢…...

C++ 求圆面积的程序(Program to find area of a circle)

给定半径r&#xff0c;求圆的面积。圆的面积应精确到小数点后5位。 例子&#xff1a; 输入&#xff1a;r 5 输出&#xff1a;78.53982 解释&#xff1a;由于面积 PI * r * r 3.14159265358979323846 * 5 * 5 78.53982&#xff0c;因为我们只保留小数点后 5 位数字。 输…...