C++高效计算素数的方法
来源:互联网 发布:咨询服务协议 软件 编辑:程序博客网 时间:2024/05/16 23:45
在网上看到很多计算素数的c++例子,本人试了一下觉得效率不高,于是自己写了个算,效率还算可以,如图!
- 我们要计算素数,首先要明确素数定义及性质:
分析题目理清思路
- 又称质数,有无限个。质数定义为在大于1的自然数中,除了1和它本身以外不再有其他因数
- 除2以外所有的偶数都不是素数;
- 判断一个数n是否为素数需判断它能否被2~(n-1)的数整除(余为0)
若n为大于或等于2的正整数,在n到 之间至少有一个质数
……
以上所列或多或少都有作用,我们只一些核心的内容:“除2以外所有的偶数都不是素数” “判断它能否被2~(n-1)的数整除(余为0)”确定并改进for循环
就此,我们大致可以使用for循环+if语句进行枚举判断,
for(n=0;n<=1000000;n++)
又根据第2条,我们可以节省很多时间不用去穷举,所以将for中的增量改为2,将初始值改为1(其实就是穷举除1的奇数进行判断)
for(n=1;n<=1000000;n+=2) //n+=2是n=n+2缩写减少if判断次数及内容
这里要用到一个数学性质,能减少程序的运算枚举量
原
if(n%i==0)
break;
else if(n%i!0)
输出语句:输出n
改后
if(n%i==0)
break;
if (i>sqrt(n))
{
输出语句
}
优化
c++自带有计时函数,我们可以使用它来计时程序运行完需要的时间
clock()函数使用示例:
代码区块
纯原创手打,请珍惜他人智力成果!
#include<iostream>#include<ctime> //for clock()#include<windows.h> //可无using namespace std;int main(){ long time; //clock的结果是个长整型变量clock_t start,finish;start=clock(); //计时开始 double a=0.3,b=1.2; for(int x;x<=2000;x++) //循环2000次 { a=a*b; cout<<a<<endl; } Sleep(1000); //调用windows.h库暂停finish=clock(); //计时结束time=(finish-start)/1000; //转化为秒 cout<<"运行程序共用 "<<time<<"秒\n"; return 0;}
最后放上**计算素数**的代码,也许还有改进方法,欢迎讨论
#include<iostream>#include<cmath>#include<ctime>//作者:猪猪 CSDN:jackjob404 TIEBA:@V超级猪猪 using namespace std;int main(){system("title 计算素数");system("cls");//以上两句可省略 long time;int i,t=2;long long n;clock_t start,finish;start=clock();cout << "10E素数有:\n[第1组]2" << endl;for (n=3;n<=1000000000;n+=2){for(i=2;i<=sqrt(n);i++)if(n%i==0) break;if (i>sqrt(n)){ t++;cout <<"[第"<<t<<"组]"<<n<<endl;}}finish=clock();time=(finish-start)/100000;cout <<"10E内素数共有"<<t<<"对\n共花费"<<time<<"秒"<<endl;return 0;}
阅读全文
0 0
- C++高效计算素数的方法
- C语言求素数/质数最高效的方法
- 判断素数的高效方法
- 高效的计算素数的算法--埃氏筛法
- 求素数的几种高效方法
- 求素数的几种高效方法
- 高效判断素数方法
- 高效判断素数方法
- 高效判断素数方法
- 计算幂的一种高效方法
- 计算页码总数的高效方法
- 素数的高效判断
- 求一千万以内的素数的比较高效的方法,
- 高效判断素数的算法
- c 求素数的一般方法
- C语言——高效筛法求素数
- 一个高效的计算字符串长度的方法 C++
- 打素数表高效方法(线性)
- scala 基础知识点
- bzoj2734 [HNOI2012]集合选数(状压DP)
- 线索二叉树的基本操作
- Introduction to MATLAB for Engineers and Scientists.pdf 2017 英文原版 免费下载
- Windows10下的docker安装与入门 (一)使用docker toolbox安装docker
- C++高效计算素数的方法
- ajax详解
- 我的第一场CF小结
- CompTIA Security+ Study Guide, 7th Edition.pdf 2017 英文原版 免费下载
- dp专题:复制书稿
- nowcoder 2017年浙江工业大学大学生程序设计迎新赛预赛-栗酱的异或和
- 设计思想学习—工厂方法模式
- K和KB的区别
- prim算法