用算法求N(N>=3)之内素数的个数

计算机二级WPS演示文稿全攻略:从母版设计到动画设置 演示文稿是现代办公软件的核心组件,其原理是通过幻灯片序列化展示信息。在计算机二级WPS Office考试中,掌握演示文稿技术不仅能提升办公效率,更是职场必备技能。通过母版设计可以统一整体风格,而动画设置则能增强视觉表现力——这两个热词正是考试的高频考点。在实际应用场景中,从创建幻灯片到设置切换效果的全流程操作,都需要遵循规范的排版逻辑。本文以WPS演示文稿为例,系统讲解如何通过母版统一格式、精准设置动画参数,帮助考生规避常见操作误区,全面提升演示文稿的工程实践能力。 阅读详情


首先,我们谈一下素数的定义,什么是素数?除了1和它本身外,不能被其他自然数整除(除0以外)的数

称之为素数(质数);否则称为合数。


根据素数的定义,在解决这个问题上,一开始我想到的方法是从3到N之间每个奇数进行遍历,然后再按照素数的定义去逐个除以3到

根号N之间的奇数,就可以计算素数的个数了。


于是便编写了下面的代码:

(代码是用C++编写的)

#include<iostream>
#include <time.h> 
using namespace std;

const int N = 1000000;

int compuPrimeN(int);

int main(char argc, char* argv[])
{
	int iTimeS = clock();
	int iNum = compuPrimeN(N);
	int iTimeE = clock();

	cout << iNum << endl;
	cout << "算法时间:" <<iTimeE - iTimeS<<"毫秒"<< endl;
	getchar();
	return 0;
}

int compuPrimeN(int maxNum)
{
	//算法1
	int iNum = 1;  //起始记上2
	bool bPrime = true;
	for (int i = 3; i <= maxNum; i += 2)
	{
		bPrime = true;
	for (int j = 3; j <= (int)sqrt(i); j += 2)
	{
		if (i%j == 0)
		{
			bPrime = false;
			break;
		}
	}
	if (bPrime)
		iNum++;
	}

	return iNum;
}
运行后如图所示:


由此可见,算法的性能不是很好,在时间上还有很大可以优化的空间。

那么,该如何优化?

首先,我是想,既然去掉了2的倍数,那么能不能去掉3的倍数,但后来

发现,在第二个循环里第一个取余的就是3,那么3的倍数其实只计算了一次

就过滤,所有没有必要再往下思考。

后来我想到,在第二个循环里,3取余过了,如果没跳出循环,那么6,9之类的

应该不用继续取余,同理,5取余过了,那么10,15...就不该继续取余,因为取余

5不为0,那么取余10,15肯定也不为0.换言之,那么不该取余的

输入正整数n(n大于等于2),求不大于n的全部质数(素数)【其中一种优化算法:筛选数组法】 1, 质数(素数)概念:质数(prime number)又称素数,有无限个。一个大于1的自然数,除了1和它本身外,不能被其他自然数整除。例如:3 只能被1和3整除,5,7,9 这些都是。4,6这些都不是质数(注意2是质数)。 2 基本思想:利用数组存储所有数值,筛选出全体质数 (1)输入n,创建数组p,数组的内容从0开始依次增1 (2)循环遍历数组p,从下标(记为i)为2的开始 (2.1)如果当前的 p[i] 不是质数,continue 筛选下一个 (2.2)检查数组p中从下标i之后的元素是否为素数。 (2 阅读详情

相关推荐

质因数的个数 - 九度教程第54题

质因数的个数 - 九度教程第54题 题目 时间限制:1 秒 内存限制:32 兆 特殊判题:否 题目描述: 求正整数 N(N&gt;1)的质因数的个数。 相同的质因数需要重复计算。如 120=22235,共有 5 个质因数。 输入: 可能有多组测试数据,每组测试数据的输入是一个正整数 N,(1&lt;N&lt;10^9)。 输出: 对于每组数据,输出 N 的质因数的个数。 样例输入: 120 ...

Yoc Lu 1221

计算 N 以内的所有素数

编写C++程序完成以下功能: (1) 提示用户输入N; (2) 计算出从2到N之间的所有素数; (3) 将结果保存在一个文本文件中。

Cadence仿真数字电路功耗

Cadence仿真数字电路功耗 数字电路的功耗采用平均电流乘电源电压获得,所以本文的关键是测量平均电流。 仿真前设置好仿真参数后,在仿真的ADE街边选择:outputs➡to be saved➡select on design 选择电源的负端电流(若选择正端,则电流为负): 选择完成后,在ADE界面讲所选节点的plot也勾选上,点击run。仿真完成后自动显示波形。在波形上选中该电流曲线,右击选择:send to➡calculator 注意上图中,商店前的波形不稳定,需要进行截取。在calculator

qq_41519780的博客 1万+

【技术纵览】行为识别前沿模型演进:从CNN到多模态大模型

本文全面解析了行为识别技术从CNN到多模态大模型的演进历程,重点介绍了SlowFast、TimeSformer、VideoMAE和InternVideo等SOTA模型的核心创新与应用实践。通过对比分析各代模型在Kinetics-400等数据集上的表现,揭示了自监督学习和多模态融合如何推动行为识别准确率突破85%,并探讨了工业部署中的技术选型策略与优化方向。

weixin_29169505的博客 153

保姆级教程:手把手教你用Python+Zemax仿真一个简易的Nd:YAG固体激光器谐振腔

本文提供了一份详细的Python与Zemax结合的Nd:YAG固体激光器谐振腔仿真教程。从基础理论到实战操作,涵盖晶体参数化、谐振腔设计、泵浦建模、动态仿真及热效应补偿等关键步骤,适合光学专业学生和工程师快速掌握激光器仿真技术。

weixin_30500473的博客 743

Python OpenCV基于颜色通道分离法去除图片中的红色印章

最近一段时间的工作都是研究如何去除图片中的红色印章,在网上查找了大量的大佬写过的方法,发现大多数是采取颜色通道分离法来做,并且效果还不错。站在前人的肩膀上,我又做了些许调整,谈不上是改进,但是能应对更对的情况总还是好的,特此记录。 拿发票做例子,印章相较于其它部分最大的不同就是印章是红色的,而其它部分不是(这是一句废话)。 那么第一步当然就是将红色分离出来,这一步可以采用Python第三方库OpenCV里的 cv2.split()方法,该方法是把RGB图像的三个通道拆分开来,得...

wl_Honest的博客 1万+

保姆级教程:用STM8S207R6和FD6288T自制BLDC驱动板,从原理图到代码框架搭建

本文提供了一份详细的STM8S207R6和FD6288T自制BLDC驱动板教程,涵盖从原理图设计到代码框架搭建的全过程。通过硬件选型、电源电路设计、PWM定时器配置等关键步骤解析,帮助开发者快速掌握无刷直流电机驱动技术,实现高效稳定的电机控制方案。

weixin_28729205的博客 488

一篇文章足够你学习Bluez,提供史上最全的Bluez教程,让你告别Bluez从入门到放弃

Bluez是真的难,说“入门到放弃”真的毫不夸张,Bluez的学习曲线陡峭,要求对Linux 系统/驱动概念、D-Bus 通信和蓝牙协议都有要求,加上网络上其实没有一个完整的介绍Bluez系列的文档,所以不管是蓝牙初学者还是蓝牙从业人员,都有不小的难度。

朝气蓬勃 2535

IP-Guard分类管理详解

大家都知道在配置IPGUARD策略前需要做分类库进行设置和分类。 1、应用程序:可以分类,例如上班时间只能用OFFICE和WPS,记事本等办公软件,可以在分类里设置一个类 ;办公软件,在未分类里找到OFFICE,WPS等拖入心建的分类里就可以在配置策略里调用。 2、网站分类也不一样,可以按照自己方式自定义。也可以导入厂家已经收集到的网站分类。 3、邮箱分类:可以提前定义好一个或...

IP-Guard专栏 589

第七天 Labview进阶(7.2 与汇川PLC通信)

运行环境: Labview 2020 Autoshop v4.10.1.1 该文档中包括Labview程序和汇川PLC程序,可以完美实现Labview与汇川PLC的通信。具体的使用教程可以参考本人的相关文章,讲解详尽,请尽情享用!

weixin_38637405的博客 3527

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

上一篇: Ubuntu14.04安装wineqq国际版
下一篇: 个人关于存储不同类型对象进行碰撞检测的一些思路
Beyond我爱杨
博客等级 码龄13年 36粉丝 39原创
评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值