1.对于判断一个数n是否为素数,最朴素的方法是按素数的定义,试除以从2开始到m-1的整数,如果无一例外地不能整除,则该数一定是素数。

#include <iostream>
using namespace std;int main(){int n;cin >> n;for(int i=2; i<n; i++){if(n%i == 0){cout << n << " isn't a prime" << endl;return 1;}}cout << n << " is a prime" << endl;return 0;
}

2.想一想,若2都不能除尽,还要试4, 6, 8, …吗?若3都不能除尽,还要试9, 15, 21, …吗?等等。一个数,如果有因子的话,那么在它的平方根数以内就应该有,否则就没有因子。所以必定有一个因子不大于m的平方根。故判断m是否为素数,只要试除到m的平方根就可以了,不必一直到m-1。

#include <iostream>
#include <cmath>
using namespace std;int main(){int n;cin >> n;for(int i=2; i<=sqrt(n); i++){if(n%i == 0){cout << n << " isn't a prime" << endl;return 1;}}cout << n << " is a prime" << endl;return 0;
}

3.另一种判断素数的方法–筛法。从文件prime.txt中读入一些整数,然后判断其是否为素数。从2开始的某个连续整数集合,留下2,除去所有2的倍数,留下3,除去所有3的倍数,留下5,再除去所有5的倍数,如此等等。留下某个最先遇到的素数,将其所有的倍数从该数集中去掉。最后,数集中就全是素数了。接下来,要判断一个数是否为素数,可以该数为下标,访问素数集合。如果是,则为素数,否则不是素数。

#include <iostream>
#include <vector>
#include <fstream>
using namespace std;int main(){vector<int> prime(10000, 1);for(int i=2; i<100; i++){if(prime[i]){for(int j=i; i*j<10000; j++)prime[i*j] = 0;}}ifstream in("prime.txt");for(int k; in>>k && k>1 && k<10000; )cout << k << " is " << (prime[k] ? "":"not ") << "a prime." << endl;return 0;
}

程序中,先将10000个向量元素都赋初值1,凡是该下标的元素为1的,则为素数。所以初始状态下,所有整数都是素数,在这基础上将不是素数的数筛掉(将对应元素置0)。在筛的过程中,用了“若为素数,必有因子小于其平方根”的思想,10000个数,过滤因子只要到100,就能保证10000以内全是素数了。

在程序中,对于3来说,要去掉所有3的因子,包括6、12、18等,但事实上,偶数在上一轮中已经作为2的倍数而去掉了。所以,这个过程还有一些重复操作,算法还有可改进的地方。

如何判断素数(C++版)相关推荐

  1. 判断素数 java版 PTA

    本题的目标很简单,就是判断一个给定的正整数是否素数. 输入格式: 输入在第一行给出一个正整数N(≤ 10),随后N行,每行给出一个小于2 ​31 ​​ 的需要判断的正整数. 输出格式: 对每个需要判断 ...

  2. L1-028 判断素数(C语言版)

    L1-028 判断素数 (10 分) 本题的目标很简单,就是判断一个给定的正整数是否素数. 输入格式: 输入在第一行给出一个正整数N(≤ 10),随后N行,每行给出一个小于2 ^​31 的需要判断的正 ...

  3. 微课|中学生可以这样学Python(例4.1):快速判断素数

    适用教材: 董付国,应根球.<中学生可以这样学Python>.清华大学出版社,2017. 第4章  循环结构 4.3  精彩例题分析与解答--例4.1  快速判断素数 京东购买链接:htt ...

  4. Python使用pyopencl在GPU上并行处理批量判断素数

    扩展库pyopencl使得可以在Python中调用OpenCL的并行计算API.OpenCL(Open Computing Language)是跨平台的并行编程标准,可以运行在个人电脑.服务器.移动终 ...

  5. python判断素数程序_python素数判断

    广告关闭 腾讯云11.11云上盛惠 ,精选热门产品助力上云,云服务器首年88元起,买的越多返的越多,最高返5000元! 质数(prime number),又称素数,指在大于1的自然数中,除了1和该数自 ...

  6. 算法--猫扑素数--java版

    算法–猫扑素数–java版 简介 猫扑素数: 形如以 2 开头, 之后跟任意多个 3 的十进制整数如果是个素数, 则它是猫扑素数. 如 2, 23, 233, 2333, 23333 都是猫扑素数, ...

  7. ACMNO.23 C语言-素数判定 写一个判断素数的函数,在主函数输入一个整数,输出是否是素数的消息。 输入 一个数 输出 如果是素数输出prime 如果不是输出not prime

    题目描述 写一个判断素数的函数,在主函数输入一个整数,输出是否是素数的消息. 输入 一个数 输出 如果是素数输出prime 如果不是输出not prime 样例输入 97 样例输出 prime 来源/ ...

  8. c语言中c为字符型便量,c='97'是否正确,C语言判断题Word版

    <C语言判断题Word版>由会员分享,可在线阅读,更多相关<C语言判断题Word版(3页珍藏版)>请在人人文库网上搜索. 1.传播优秀Word版文档 ,希望对您有帮助,可双击去 ...

  9. java 语言如何判断素数_C语言实验之判断素数(循环结构java)方法讲解

    C语言实验之判断素数(循环结构java)方法讲解 Problem Description 从键盘上输入任意一个正整数,然后判断该数是否为素数. 如果是素数则输出"This is a prim ...

最新文章

  1. Python 哪种方式循环最快,或许颠覆你的认知!
  2. 谷歌实现2种新的强化学习算法,“比肩”DQN,泛化性能更佳!|ICLR 2021
  3. javascript黑魔法
  4. ElementNotVisible exception in Selenium WebDriver
  5. java date 减小时_java 获取本机当前时间并对小时任意加减
  6. 总结了200道经典的机器学习面试题 (附参考答案)
  7. Java面试你必须要知道的那些知识,面试建议
  8. Python笔记:使用pywin32处理excel文件
  9. 盖茨庆祝万维网诞生30周年 庆幸自己有机会影响数字革命
  10. 分布式服务弹性框架“Hystrix”实践与源码研究(一)
  11. JS 与 后台如何获取 Cookies
  12. android+图标自动排列,Android用RecyclerView实现图标拖拽排序以及增删管理
  13. Python静态网页爬虫项目实战
  14. python cnn 实例_Python实现CNN的多通道输入实例
  15. RESTful理解与实践
  16. EfficientDet介绍
  17. JavaScript和html5 canvas生成圆形印章
  18. android 5.0合并分区,中兴天极2 S291合并分区刷Android 5.1刷机教程
  19. Android录屏分析(Android12源码)
  20. 8月5日邮件服务器故障报告(2008年)

热门文章

  1. matlab 矩阵取众数,时间序列分析的matlab统计量函数1
  2. 速成,掌握UWA Pipeline 功能和使用方法
  3. UWA学堂|解决方案模块
  4. CCF 考试C语言编辑器的一个注意事项
  5. 蒲慕明:今人眼中的大脑之美 | 书评
  6. 论文查重率太高怎么进行修改?
  7. VS_MFC:文件读写
  8. ro手游服务器维护公告,仙境传说手游 7月22日5点-10点停服维护公告
  9. E: The repository ‘http://ppa.launchpad.net/appimagelauncher-team/stable/ubuntu bionic Release‘ does
  10. 平面设计和3D设计哪个好找工作?次世代游戏建模的前景,超出想象!