打印100~200 之间的素数
2015-11-29 15:45
218 查看
编写思想:对100到200之间的数依次进行for循环判断,看其是否为素数。判断方法:对于一个自然数,除了1以外,不是素数就是合数。若该数字是素数,则不能被除了1和它自身以外的数整除;而一个数如果是合数,则它的所有因子不会大于对其开根号所得出的数,由此可得出每个数最多时候的循环次数。
初次生成的源代码如下:
101 103 107 109 113 127 131 137 139 149 151 157 163 167
173 179 181 191 193 197 199
由于以上程序产生了一些不必要的循环,增加了程序的时间复杂度,故而对其进行了改进。
改进1:去掉了标志变量sign,减少了内存的占用;
改进2:由于找的是100到200之间的素数,因此其间的偶数均不必进行判断,故而只剩下奇数,又由于奇数肯定无法被偶数整除,故而去掉variable中的偶数循环,降低了程序的时间复杂度。
改进后的代码如下:
101 103 107 109 113 127 131 137 139 149 151 157 163 167173 179 181 191 193 197 199
初次生成的源代码如下:
#include<stdio.h> #include<math.h> int main() { int primer,variabe,sign; for(primer=101;primer<201;primer++) { for(variabe=2;variabe<=sqrt(primer);variabe++) { sign=0; if(primer%variabe==0) break; else sign=1; } if(sign==1) printf("%-5d",primer); } return 0; }运行结果如下:
101 103 107 109 113 127 131 137 139 149 151 157 163 167
173 179 181 191 193 197 199
由于以上程序产生了一些不必要的循环,增加了程序的时间复杂度,故而对其进行了改进。
改进1:去掉了标志变量sign,减少了内存的占用;
改进2:由于找的是100到200之间的素数,因此其间的偶数均不必进行判断,故而只剩下奇数,又由于奇数肯定无法被偶数整除,故而去掉variable中的偶数循环,降低了程序的时间复杂度。
改进后的代码如下:
#include<stdio.h> #include<math.h> int main() { int primer,variabe; for(primer=101;primer<201;primer+=2) { for(variabe=3;variabe<=sqrt(primer);variabe+=2) { if(primer%variabe==0) break; } if(variabe>sqrt(primer)) printf("%-5d",primer); } return 0; }运行结果同上一致:
101 103 107 109 113 127 131 137 139 149 151 157 163 167173 179 181 191 193 197 199
相关文章推荐
- [转][源代码]Comex公布JailbreakMe 3.0源代码
- C#获取网页源代码的方法
- LCL.VBS 病毒源代码
- ASP常用源代码的总结(上)
- php查看网页源代码的方法
- C#查找素数实现方法
- java使用筛选法求n以内的素数示例(java求素数)
- java求100以内的素数示例分享
- 判断一个数是不是素数的方法
- Lua中的源代码预编译浅析
- c#求范围内素数的示例分享(c#求素数)
- ASP常用源代码的总结(下)
- android private libraries 中的包源代码添加方法
- GO语言求100以内的素数
- Java列出2到100之间所有素数的方法
- Python素数检测实例分析
- Python实现高效求解素数代码实例
- Python素数检测的方法
- Python实现求最大公约数及判断素数的方法
- Go语言生成素数的方法