Weiss数据结构--练习2.20扩展(素数 厄拉多塞筛)
来源:互联网 发布:音乐视觉效果软件 编辑:程序博客网 时间:2024/04/29 23:32
package cn.yjnull.datastrhomework;/** * 编写一个程序来确定正整数N是否是素数 * @author Yjnull * */public class DataStr2_20 { //普通方法:判断是否是奇数(或者2),然后判断是否能被3,5,7,...,根号n 整除,不能则是素数 //时间复杂度:O(根号N) public static boolean isPrime(int n){ if(2==n) return true; if(n<=1||0==n%2){ return false; }else{ for(int i = 3;i<=Math.sqrt(n);i+=2){ if(n%i==0){ return false; } } return true; } } //厄拉多塞筛:制作整数2到N的表,找出最小的未被删除的整数i,打印i,然后删除i,2i,3i,... //当i>根号N时结束。 //时间复杂度:O(NloglogN) public static void isEeatosthese(int n){ int a[] = new int[n]; int count=0; for (int i = 2; i < n; i++) //制作2到N的表 a[i] = 1; for (int i = 2; i < Math.sqrt(n); i++) { if(1==a[i]) //找出最小的未被删除的i for (int j = i+i; j < n; j+=i) { //删除i,2i,3i,... a[j]=0; } } for (int i = 2; i < n; i++) { //打印结果 if(1==a[i]) //System.out.println(i+", "); count++; } System.out.println(count); } public static void main(String[] args) { int s=0; double time = System.currentTimeMillis(); for (int i = 1; i <= 10000000; i++) { if(isPrime(i)){ //System.out.print(i+", "); s++; //if(s%15==0&&s!=0) //System.out.println(); } } double time2 = System.currentTimeMillis(); System.out.println(s+"\n"+(time2-time)+"ms");//s=664579(素数个数) time=4232.0ms double time3 = System.currentTimeMillis(); isEeatosthese(10000000); double time4 = System.currentTimeMillis(); System.out.println("\n"+(time4-time3)+"ms");//s=664579 time=175.0ms }}
0 0
- Weiss数据结构--练习2.20扩展(素数 厄拉多塞筛)
- Weiss数据结构与算法--练习2.23(幂运算)
- 数据结构与算法分析java语言描述(Weiss)练习3.1( 表)
- weiss数据结构和算法书的使用说明
- 素数练习
- 素数练习
- 《数据结构与算法分析C++描述》Mark.Allen.Weiss.pdf
- 数据结构 素数
- Weiss-(DSAA - in C,2.13)求素数的3个方法
- 数据结构与算法分析:C++描述(Mark Allen Weiss) 和 数据结构(刘大有)笔记
- 数据结构练习
- 1445素数练习
- 练习,回文、素数
- 算法练习--素数环
- ACM练习 反素数
- 求素数的练习
- PAT练习-数素数
- python练习1:素数
- 新浪微博(2)之点击图片放大至全屏---ViewPager用法
- 读取properties文件示例
- Java网络编程框架
- S4.7_Struts2_Include 项目代码分功能模块开发
- windows下git warning: LF will be replaced by CRLF in user.log
- Weiss数据结构--练习2.20扩展(素数 厄拉多塞筛)
- JAVA 对象流
- 排序算法总结
- Centos6.5 下的 ActiveMQ 5.14.2 的安装与配置
- 收回键盘的两种方法
- 关于gets,fgets,scanf
- 太赫兹在医学诊断方面的应用
- C语言关键字的使用
- JavaScript 闭包