C++大学教程(第九版)6.29素数

题目

(素数)素数是只能被1和自已整除的整数。例如,235和7是素数而468和9不是素数
a)编写一个函数,确定一个数是否是素数。
b)在程序中使用这个函数,该程序确定和打印2 ~10000之间的所有素数。在确信已找到所有的素数之前,实际需测试这些数中的多少个数?
c)起初,你可能认为 n/2 是确定一个数是否为素数所要进行的最多的测试次数,但是实际上只需要进行n的平方根次就可以了。为什么呢?重新编写程序,用这两种方式运行。估计性能提高了多少。

b)代码

b)实际需要测试这些数中的5000个,满足条件的代码如下:
增加了计算程序运行时间的部分。

#include <iostream>
#include <iomanip>
#include <ctime>
using namespace std;bool isPrime(int);int main()
{clock_t startTime, endTime;startTime = clock();int count = 0;for (unsigned long long i = 2; i <= 10000; i++){if (isPrime(i)){cout << setw(4) << i << "\t"; //<< (isPrime(i) ? "是素数" : "")count++;if (count != 0 && count % 10 == 0){cout << endl;}}}endTime = clock();cout << "\nThe run time is " << static_cast<double>(endTime - startTime) / CLOCKS_PER_SEC<< "s." << endl;return 0;
}bool isPrime(int n)
{bool flag = true;for (int i = 2; i < n; i++){if (n % i == 0)flag = false;}return flag;
}

运行截图

可以看到程序运行时间0.481s
在这里插入图片描述在这里插入图片描述

c)代码

修改了判断素数的函数代码,并计算了程序运行时间。

思想:素数的因子只有1和它本身。 如果数c不是素数,则还有其他因子。设a,b中定有一个大于sqrt( c ) ,一个小于sqrt( c ) 。所以m一定有一个小于等于其平方根的因数,那么验证素数时就只需要验证到其平方根就可以了。

#include <iostream>
#include <iomanip>
#include <cmath>
#include <ctime>
using namespace std;bool isPrime(unsigned long);int main()
{clock_t startTime, endTime;startTime = clock();int count = 0;for (unsigned long i = 2; i <= 10000; i++){if (isPrime(i)){cout << setw(4) << i << "\t";count++;if (count != 0 && count % 10 == 0){cout << endl;}}}endTime = clock();cout << "\nThe run time is " << static_cast<double>(endTime - startTime) / CLOCKS_PER_SEC<< "s." << endl;return 0;
}bool isPrime(unsigned long n)
{bool flag = true;unsigned long asquareRoot = static_cast<int>(sqrt(n)); // n的平方根for (int i = 2; i <= asquareRoot; i++){if (n % i == 0)flag = false;}return flag;
}

运行截图

代码运行时间0.19s,比b)中代码快了不少!
在这里插入图片描述

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

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

相关文章

基于PSO-BP神经网络的风电功率预测(MATLAB)

作品简介 &#xff1a;关注公众号“电击小子程高兴的MATLAB小屋”获取优惠 主要内容 该模型将粒子群算法与BP神经网络结合用于BP神经网络的训练&#xff0c;即优化BP网络中的连接权值和各项阈值&#xff0c;然后利用神经网络分布式并行处理优势、自适应学习能力以及较好的…

c++中的包装器 function

文章目录 前言包装器 function及模板的低效性修复问题 前言 C提供了多个包装器&#xff08;wrapper&#xff0c;也叫适配器adapter&#xff09;。这些对象用于给其他编程接口提供更一致或更合适的接口。 bind1st和bind2ed就是两个适配器&#xff0c;它们让接受两个参数的函数…

【.NET Core】多线程之线程池(ThreadPool)详解(二)

【.NET Core】多线程之线程池&#xff08;ThreadPool&#xff09;详解&#xff08;二&#xff09; 在上一篇《【.NET Core】多线程之线程池&#xff08;ThreadPool&#xff09;详解&#xff08;一&#xff09;》中我们详细讲解了&#xff0c;线程池概念&#xff0c;如何应用及…

[嵌入式软件][启蒙篇][仿真平台] STM32F103实现定时器

[嵌入式软件][启蒙篇][仿真平台] STM32F103实现串口输出输入、ADC采集 文章目录 一、定时器(1) 简介STM32定时器计算公式 (2) 示例代码&#xff08;基本定时功能&#xff09;(3) 仿真效果 &#xff08;基本定时功能&#xff09;(4) 示例代码&#xff08;PWM 呼吸灯&#xff09…

【GitHub项目推荐--12306 抢票助手 python】【转载】

这个项目名很干脆&#xff0c;不知道以为是 12306 网站的源码&#xff0c;其实不是这是全 GitHub最德高望重的抢票小助手&#xff0c;功能一直在更新&#xff0c;且现已支持 Python 3.6 以上版本。 开源地址&#xff1a;https://github.com/testerSunshine/12306

利用GPU加速自定义风格图像生成-利用GPU加速结合了ControlNet/ Lora的Stable Diffusion XL

点击链接完成注册&#xff0c;参加本次在线研讨会 https://www.nvidia.cn/webinars/sessions/?session_id240124-31319 随着AI技术的发展, 数字内容创建业务也变得越来越火热。生成式AI模型的发布, 让我们看到了人工智能在各行各业的潜力。您只需要用语言简单描述自己希望看…

【Java】Maven的安装与配置

初识Maven Maven是专门用于管理和构建Java项目的工具&#xff0c;它的主要功能有&#xff1a; 提供了一套标准化的项目结构 提供了一套标准化的构建流程&#xff08;编译&#xff0c;测试&#xff0c;打包&#xff0c;发布……&#xff09; 提供了一套依赖管理机制 标准化的…

质疑鸿蒙系统的是什么人群?为什么要杠

《HarmonyOSNEXT星空版》已堵住大部分人质疑的嘴。就在本月1月18&#xff0c;华为鸿蒙生态千帆启航仪式正式&#xff0c;HarmonyOSNEXT鸿蒙星河版发布&#xff1a;全面自研。 架构层面&#xff0c;HarmonyOSNEXT不依赖传统的Unix内核和Linux内核&#xff0c;而是实现了AI大模型…

《高教学刊》是什么级别的期刊?是正规期刊吗?是核心期刊吗?

​标题解答 1、《高教学刊》是什么级别的期刊&#xff1f; 省级 2、《高教学刊》是核心期刊吗&#xff1f; 不是&#xff0c;只是封面有核心字样 《高教学刊》刊发高等教育教学与高教理论研究成果&#xff0c;交流高校教学与建设的改革措施和实践经验&#xff0c;探索高等教…

每天五分钟计算机视觉:掌握迁移学习使用技巧

本文重点 随着深度学习的发展,迁移学习已成为一种流行的机器学习方法,它能够将预训练模型应用于各种任务,从而实现快速模型训练和优化。然而,要想充分利用迁移学习的优势,我们需要掌握一些关键技巧。本文将介绍这些技巧,帮助您更好地应用迁移学习技术。 迁移学习的关键…

高客单价企业必读:私域运营趋势分析与实操技巧

一、深入挖掘&#xff1a;场景洞察的新维度 当我们收到销售的群发信息时&#xff0c;通常会感到被打扰或骚扰&#xff0c;这是因为这些信息通常是基于广泛的受众群体发送的&#xff0c;缺乏针对个体消费者的定制化和个性化。这种缺乏个性化的沟通方式很容易被消费者视为不必要…

Temu活动库存设置多少合适,Temu活动要押金吗?-站斧浏览器

Temu活动库存设置多少合适&#xff1f; 对于Temu活动库存的设置&#xff0c;并没有固定的标准。其设置应根据商品的特性、市场需求、以及您的销售目标等因素进行综合考虑。然而&#xff0c;以下是一些建议&#xff0c;可以帮助您做出决策&#xff1a; 商品特性&#xff1a;某…

C++中命名空间、缺省参数、函数重载

目录 1.命名空间 2.缺省参数 3.函数重载 1.命名空间 在C中定义命名空间我们需要用到namespace关键字&#xff0c;后面跟上命名空间的名字&#xff0c;结构框架有点类似结构体&#xff08;如图所示&#xff09; 上面的代码我一一进行讲解&#xff1a; 1.我们先来说第三行和main函…

MAXWELL

MAXWELL 一、maxwell是什么 maxwell 官网地址&#xff1a;http://maxwells-daemon.io/ 因为官网是纯英文的&#xff0c;倒是不难懂&#xff0c;但总觉得写的略粗糙&#xff08;也可能笔者英文水平确实拉胯&#xff0c;有待提高&#xff09;。所以还是自己百度了一下。 当my…

测试必须要知道的四个主要阶段

&#x1f525; 交流讨论&#xff1a;欢迎加入我们一起学习&#xff01; &#x1f525; 资源分享&#xff1a;耗时200小时精选的「软件测试」资料包 &#x1f525; 教程推荐&#xff1a;火遍全网的《软件测试》教程 &#x1f4e2;欢迎点赞 &#x1f44d; 收藏 ⭐留言 &#x1…

力扣hot100 反转链表 指针 递归 一题多解

Problem: 206. 反转链表 文章目录 思路&#x1f496; 迭代 双指针&#x1f496; 递归 思路 &#x1f468;‍&#x1f3eb; 大佬题解 &#x1f496; 迭代 双指针 ⏰ 时间复杂度: O ( n ) O(n) O(n) &#x1f30e; 空间复杂度: O ( 1 ) O(1) O(1) /*** Definition for …

LLM RAG 多种方式装载LLM的实践

一、大模型系统中检索增强生成&#xff08;RAG&#xff09;的意义 当前大模型在处理特定领域或者高度专业化的查询时表现出知识缺失&#xff0c;当所需信息超出模型训练数据范围或需要最新数据时&#xff0c;大模型可能无法提供准确答案。基于行业SOP、行业标准、互联网实时信…

【Android 10】 BatteryController

学习了一下电池的相关模式&#xff0c;也就是它的观察者模式&#xff0c;先附上图 图应该挺清晰的&#xff0c;BatteryControllerImpl就是被观察者&#xff0c;BatteryControllerImpl重写了CallbackController的两个方法用于添加或移除观察者。 void addCallback(T listener);…

vivado 预设文件、IP设置(_P)、用户参数、以太网时钟处理、GT位置限制、当前可识别板的IP列表

了解预设文件 预设文件有助于在特定配置中自定义IP核心。PS7、axi_emc和当linear_flash或DDR3_SDRAM 界面是在Vivado IP集成商的Board选项卡中选择的。预设文件使用XML格式。preset_file是为特定的Board文件定义的&#xff0c;可以是用于将预设应用于多个IP。 <ip_presets…

UG制图-视图与投影

当我们进入图纸页后&#xff0c;我们需要对产品进行投影然后进行标注 注意&#xff1a;如果是从零件3D中直接进入制图&#xff0c;默认情况下图框所在的图层是不显示的&#xff0c;我们可以通过菜单或者快捷键ctrl L进入图层设置模块&#xff0c;将图层170和173勾选为显示 我…