计算素数
2015-05-29 14:38
281 查看
题目:打印小于n的所有素数。
这是一个很简单的题目。这里写出四种解决方法。方法一:
最基本的判断素数的方法。#include <stdio.h> int prime1(int n) { int i; for (i = 2; i < n; i++) if (n%i == 0) return 0; return 1; } int main() { int i, n, m; printf("Please input the n:\n"); scanf("%d", &n); for (i = 2; i <= n; i++) if (prime4(i)) printf("%d ", i); return 0; }
方法二:
改进了判断的次数。#include <stdio.h> #include <math.h> int prime2(int n) { int i, k; k = (int)sqrt(n); for (i = 2; i <= k; i++) if (n%i == 0) return 0; return 1; } int main() { int i, n, m; printf("Please input the n:\n"); scanf("%d", &n); for (i = 2; i <= n; i++) if (prime2(i)) printf("%d ", i); return 0; }
方法三:
通过对被2、3和5整除的特殊检验,避免了近3/4的开方运算。#include <stdio.h> #include <math.h> int prime3(int n) { int i, bound; if (n%2 == 0) return (n==2); if (n % 3 == 0) return (n==3); if (n % 5 == 0) return (n==5); bound = (int)sqrt(n); for (i = 7; i <= bound; i = i+2) if (n%i == 0) return 0; return 1; } int main() { int i, n, m; printf("Please input the n:\n"); scanf("%d", &n); for (i = 2; i <= n; i++) if (prime3(i)) printf("%d ", i); return 0; }
方法四:
将开方运算换成乘法运算。开方运算花费的时间比乘法运算花费的多。#include <stdio.h> int prime4(int n) { int i; if (n%2 == 0) return (n==2); if (n % 3 == 0) return (n==3); if (n % 5 == 0) return (n==5); for (i = 7; i*i <= n; i = i+2) if (n%i == 0) return 0; return 1; } int main() { int i, n, m; printf("Please input the n:\n"); scanf("%d", &n); for (i = 2; i <= n; i++) if (prime4(i)) printf("%d ", i); return 0; }
总结:
上面的四种方法中,在运行时间上是, prime1 > prime2 > prime3 > prime4。相关文章推荐
- Andriod程序如何在安卓市场发布
- python类库26[读写Excel]
- POJ 1182 食物链 (并查集)
- 硬件环境对数据库系统性能的影响
- SPRINGMVC实现在线预览功能(openOffice)
- struts2.1 + Spring 3.X + hibernate3.X架构搭建问题记录
- win7下u盘安装ubuntu14.10双系统
- Axis2开发WebService并打包成.war包发布
- nodejs npm install全局安装和本地安装的区别
- Android学习笔记--获得Android studio的SHA1的方法
- [Swift 学习笔记] 之 前言
- Hadoop1.x伪分布式详细安装步骤
- ios TableView cell的布局
- XenApp 6.5 执行PhotoShop CS5 颜色显示错误问题
- C#中的异常捕获机制(try catch finally)
- 05、Spring_web.xml_ContextLoaderListener
- DOS环境下含包并引用第三方jar的java程序的编译及运行
- jquery 监听回车事件
- 第十三周项目二:形状类族的中的纯虚函数
- VS2013建立Qt程序错误处理