博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
每日一小练——求质数
阅读量:4980 次
发布时间:2019-06-12

本文共 1455 字,大约阅读时间需要 4 分钟。

上得厅堂,下得厨房,写得代码,翻得围墙,欢迎来到睿不可挡的每日一小练!

题目:求质数

内容:

试编写一个程序,找出前N个质数。假设没有进一步要求,这不是难题。

但在此希望从所知的、使用除法的方法中,用最快的办法来编敲代码。

我的解法:上来没多想,打开vs2013就敲了起来,问题果然非常easy。分分钟就超神。。奥。不正确就攻克了!这个题目确实非常easy,先看看常规解法吧!

#include 
#include
#define endNum 200using namespace std;int _tmain(int argc, _TCHAR* argv[]){ bool isPrime(int x); cout << endNum << "以内的之所以素数为:" << endl; for (int i = 2; i < endNum; i++) { if (isPrime(i)) cout << i << " "; } getchar(); return 0;}bool isPrime(int x){ int endP = sqrt(x); bool rusult = true; for (int i = 2; i <= endP; i++) { if ((x % i) == 0) { rusult = false; } } return rusult;}
实验结果是

只是题目中要求了思索除法范围内最快的算法,事实上就是在循环中,降低以至不为质数的值的除法运算,比方2的倍数,3的倍数,和5的倍数。这样循环的递增就不是依照+1递增了,而已2,4,2,4....循环加法递增。这样能够降低循环三分之二的工作量。

改价算法例如以下

#include 
#include
#define endNum 200using namespace std;int _tmain(int argc, _TCHAR* argv[]){ bool isPrime(int x); int addNum = 2; cout << endNum << "以内的之所以素数为(改进算法):" << endl; cout << "2 3 5 "; for (int i = 7; i < endNum; ) { if (isPrime(i)) cout << i << " "; addNum = 6 - addNum; i += addNum; } getchar(); return 0;}bool isPrime(int x){ int endP = sqrt(x); bool rusult = true; for (int i = 2; i <= endP; i++) { if ((x % i) == 0) { rusult = false; } } return rusult;}
实验结果:

最后要感谢Clover_tjp同学提出的建议,我会在以后的每日一下练中加以改进,欢迎大家提出自己的意见哈!

欢迎大家增加每日一小练,嘿嘿!

每天练一练,日久见功夫,加油。


            -End-

參考文献:《c语言名题精选百则》

转载于:https://www.cnblogs.com/liguangsunls/p/7156892.html

你可能感兴趣的文章
yui问题
查看>>
c++ STL stack容器成员函数
查看>>
idea maven install 卡住,无报错排查。
查看>>
AFNetworking 3.0迁移指南
查看>>
mysql 内置功能 存储过程 创建有参存储过程
查看>>
bash变量常用技巧
查看>>
Git reflog
查看>>
BZOJ5340: [Ctsc2018]假面【概率+期望】【思维】
查看>>
leetcode341 - Flatten Nested List Iterator - medium
查看>>
php-session的使用(学习笔记,仅供参考)
查看>>
深入理解JavaScript系列(19):求值策略(Evaluation strategy)
查看>>
mp4文件格式解析(转)
查看>>
友坚恒天.开发板(Cotex-A9 Exynos4412 开发板)
查看>>
高精度运算
查看>>
番外篇-AppService服务
查看>>
解决远程连接mysql错误1130(转载)
查看>>
JavaWeb--------数据库连接池c3p0
查看>>
内联函数
查看>>
命令模式
查看>>
有关浏览器兼容样式问题
查看>>