zoukankan      html  css  js  c++  java
  • 普通方法求素数与筛法求素数比較

    普通方法求素数与筛法求素数比較
    20150806

    package day06;
    
    /*
     * 普通方法求素数与筛法求素数比較
     */
    import java.util.*;
    
    public class TestSushu {
    
    	public static void main(String[] args) {
    		Scanner scan = new Scanner(System.in);
    		System.out.print("查找范围2~");
    		int n = scan.nextInt();
    		
    		long s1=System.currentTimeMillis();
    		//1--普通方法求素数
    		int count1 = 0;
    		for(int i=2,j=0;i<=n;i++){
    			int temp=(int)(Math.sqrt(i));
    			for(j=2;j<=temp;j++){
    				if(i%j==0){
    					break;
    				}
    			}
    			if(j>temp){
    				//System.out.print(i+"	");
    				count1 ++;
    				if(count1%15==0){
    					//System.out.println();
    				}
    			}			
    		}
    		System.out.println("
    "+"2~"+n+"共同拥有"+count1+"个素数");
    		long e1=System.currentTimeMillis();
    		System.out.println("time1="+(e1-s1));
    		System.out.println("******************");
    		
    		long s2=System.currentTimeMillis();
    		//2--筛法求素数
    		boolean[] b = new boolean[n+1];
    		b[0]=b[1]=true;
    		for(int i=2;i<b.length;i++){
    			if(!b[i]){
    				for(int j=i*2;j<b.length;j+=i){
    					b[j]=true;
    				}
    			}
    		}
    		int count2 = 0;
    		for(int i=2;i<b.length;i++){
    			if(!b[i]){
    				//System.out.print(i+"	");
    				count2++;
    				if(count2%15==0){
    					//System.out.println();
    				}
    			}
    		}
    		System.out.println("
    "+"2~"+n+"共同拥有"+count2+"个素数");
    		long e2=System.currentTimeMillis();
    		System.out.println("time2="+(e2-s2));
    		
    	}
    
    }
    


    筛法求素数原理:




    总结:筛法求素数速度更快,尤其是数据比較大的时候


  • 相关阅读:
    win8.1下安装双系统ubuntu14.04.3
    如何使用cmd
    My Test about Mat
    访问Mat矩阵中的元素并为其赋值
    Mat代码操作
    waitKey()
    ASCII码对照表
    vector 中的clear()
    vector 介绍
    Mat的详解
  • 原文地址:https://www.cnblogs.com/tlnshuju/p/7048585.html
Copyright © 2011-2022 走看看