6.C++经典实例-计算给定范围内的素数(质数)

devtools/2024/10/20 20:18:47/

所谓素数(也称为质数)是指大于1的自然数,且只能被1和它本身整除的数。例如,2、3、5、7、11等都是素数。

下面是计算3000内所有的素数的实例

#include <iostream>
#include <vector>
#include <cmath>// 判断一个数是否为素数
bool isPrime(int num) {if (num <= 1) return false;  // 1及以下的数不是素数if (num == 2) return true;   // 2是最小的素数if (num % 2 == 0) return false;  // 偶数(除了2)都不是素数// 检查从3到sqrt(num)的所有奇数for (int i = 3; i <= std::sqrt(num); i += 2) {if (num % i == 0) return false;}return true;
}int main() {std::vector<int> primes;// 计算3000以内的所有素数for (int i = 2; i < 3000; ++i) {if (isPrime(i)) {primes.push_back(i);}}// 输出所有素数std::cout << "3000以内的所有素数:" << std::endl;for (int prime : primes) {std::cout << prime << " ";}std::cout << std::endl;return 0;
}

以下是执行结果:

大家想一下为什么循环到指定数的开方即可,不用再循环了,比如判断101是否为素数,那么对101进行开方计算,得到10.0499,那么只要循环10次即可,不用循环100次,可以大大节省计算量,想一想,如果10.0499*10.0499等于101,那么,只要这两个数相乘等于101的话,就不会只有1和他自己,如果小于这个开方数的,存在,也会出现重复,不为素数,当有一个数大于10.0499的时候,另外一个数,会小于10.0499,即只要是除法,总有一个数在比10.0499要小一点,所以循环到开方即可,不用全部循环,节省算力,提升运行效率。


http://www.ppmy.cn/devtools/127373.html

相关文章

止步阿里一面。。。

时间过的真快&#xff0c;转眼间国庆已经过去一周了&#xff0c;又到了新的一周&#xff0c;继续分享最新的面经。 今天分享的是粉丝在阿里巴巴的一面&#xff0c;考察了数据库、redis、kafka、ES和项目&#xff0c;数据库和redis不用多说&#xff0c;项目必用面试必考&#x…

5.C++经典实例-判断输入的年份是否为闰年

要判断一个年份是否为闰年&#xff0c;首先要明白闰年的定义&#xff1a; 如果年份能被4整除但不能被100整除&#xff0c;则是闰年。 如果年份能被400整除&#xff0c;也是闰年。 其他情况则不是闰年。 根据上面的逻辑&#xff0c;我们写代码&#xff1a; #include <io…

Redis Windows最新安装教程(2024.10.10)

文章目录 redis介绍下载地址安装流程基础操作测试Redis常用的服务指令redis介绍 Redis(Remote Dictionary Server)是一个开源的、基于内存的数据结构存储系统,常用作数据库、缓存和消息中间件。Redis具有快速、灵活、可扩展和高可用性等特点。 Redis支持多种数据结构,包括…

《计算机视觉》—— 基于dlib库的人检检测

文章目录 一、dlib库的安装1. 通过PyCharm的Settings安装2. 通过Anaconda安装&#xff08;适用于Windows等操作系统&#xff09;3. 通过命令行安装4.懒人安装 二、基于dlib库的人检测1.对图像进行人脸检测2.打开电脑摄像头&#xff0c;检测人脸 一、dlib库的安装 在PyCharm中&…

Flume面试整理-设计一个Flume数据流方案

设计一个Apache Flume数据流方案涉及多个因素,包括数据源的类型、通道(Channel)的选择、数据的目标系统(Sink),以及如何实现高吞吐量、可靠性和可扩展性。以下是一个完整的Flume数据流方案设计示例,适用于从多个Web服务器收集日志并将其传输到HDFS进行后续分析的场景。 …

如何解决JMeter响应数据乱码?

问题&#xff1a; 解决&#xff1a; 1、找到JMeter安装目录下的bin目录 2、 在bin目录下&#xff0c;打开" jmeter.properties "文件 3、搜索"sampleresult.default.encoding" 4、改成"sampleresult.default.encodingUTF-8"&#xff0c;去掉前面…

基于SpringBoot设计模式之结构型设计模式·桥接模式

文章目录 介绍开始架构图定义类的功能定义类的实现 测试样例 总结 介绍 将抽象部分与它的实现部分分离&#xff0c;使他们都可以独立地发生变化。 Bridge的意思是桥梁。就像在现实世界中&#xff0c;桥梁的功能是将河流的两侧连接起来一样, Bridge模式的作用也是将两样东西连接…

SQL 自学:游标(Cursors)的理解与应用

在 SQL 中&#xff0c;游标&#xff08;Cursor&#xff09;是一种用于处理从数据库中检索出的多行数据的机制。它允许我们逐行地处理查询结果集&#xff0c;而不是一次性处理整个结果集。 一、游标是什么 游标可以看作是一个指向结果集的指针。通过游标&#xff0c;我们可以在…