输出素数的代码优化
2015-11-28 11:41
405 查看
输出100到200的素数
#include<stdio.h> int main() { int num = 0; int count = 0; for (num = 100; num <= 200; num++) { int number = 0; for (number = 2; number <= num - 1; number++) { if (num%number == 0) { break; } } if (num == number) { printf("%d\n", num); count++; } } printf("count=%d", count); system("pause"); return 0; }
</pre><pre class="objc" name="code">对代码进行的优化:根据数学分析,偶数都不是素数,所以只考虑奇数的情况
<pre class="objc" name="code">#include<stdio.h> int main() { int num = 0; int count = 0; for (num = 101; num <= 200; num+=2) { int number = 0; for (number = 2; number <= num - 1; number++) { if (num%number == 0) { break; } } if (num == number) { printf("%d\n", num); count++; } } printf("count=%d", count); system("pause"); return 0; }
在只考虑奇数的情况下,奇数肯定不能被偶数整除,所以除数也可以只考虑在奇数情况下
#include<stdio.h> int main() { int num = 0; int count = 0; for (num = 101; num <= 200; num+=2) { int number = 0; for (number = 3; number <= num - 1; number+=2) { if (num%number == 0) { break; } } if (num == number) { printf("%d\n", num); count++; } } printf("count=%d", count); system("pause"); return 0; }
如果一个数能被其他数整除,那么这个数的两个除数中肯定有一个小于等于这个数的开平方数。(16=2*8,16=4*4,)
#include<stdio.h> #include<math.h> int main() { int num = 0; int count = 0; for (num = 101; num <= 200; num+=2) { int number = 0; for (number = 3; number <= sqrt(num); number+=2) { if (num%number == 0) { break; } } if (number > sqrt(num)) { printf("%d\n", num); count++; } } printf("count=%d", count); system("pause"); return 0; }
相关文章推荐
- MATLAB 机器人逆解 ikine
- Java新手之路——Day01 dos
- C语言学习之结构体与指针部分----结合doubango sip协议栈源代码学习---------阿冬专栏!!
- Sip协议栈学习(一)---———阿冬专栏!!
- Maven搭建Spring+Struts2+Hibernate项目详解
- SpringMVC数据验证
- Java堆内存的10个要点
- 关于 ASPCMS中产品或文章使用分类TAG使用ASPCMS:CONTENT调用出错的解决方法
- JAVA正则表达式-捕获组与非捕获组
- Python基础_即时标记及其相关的语法
- BootBroadcastReceiver.java
- 载入PLY模型 C++
- Python基础_正则表达式学习一
- C# 数据类型和字节长度
- Java语言中二位数组的遍历
- 查看Eclipse版本号,及各个版本区别
- FTP服务学习笔记之vsftpd安装和配置(2)
- Day-5
- delphi 生成网卡MAC地址
- python知识点