zoukankan      html  css  js  c++  java
  • Java实现欧拉筛与花里胡哨求质数高级大法的对比

    我也不清楚这是什么高级算法,欧拉筛是昨天有位大佬,半夜无意间告诉我的
    欧拉筛:
    主要的含义就是我把这个数的所有倍数都弄出来,然后下次循环的时候直接就可以跳过了

    import java.text.SimpleDateFormat;
    import java.util.ArrayList;
    import java.util.Arrays;
    import java.util.Date;
    
    public class 求指数 {
    
    public static	ArrayList<Integer> list = new ArrayList<Integer>();
    	public static void main(String[] args) {
    		long start = System.currentTimeMillis();
    		int [] num =getPrime(10000);
    //		for (int i :num) {
    //			System.out.print(i+" ");
    //		}
    		long end = System.currentTimeMillis();
    		System.out.println();
    		System.out.println(end-start);
    		
    
    		long start1 = System.currentTimeMillis();
    		zhishu(10000);
    //		for (int i :list) {
    //			System.out.print(i+" ");
    //		}
    		long end1 = System.currentTimeMillis();
    		System.out.println();
    		System.out.println(end1-start1);
    	}
    	//神秘求质数,我也不清楚叫什么名字
    	public static void zhishu(int n){
    		A:	for (int i = 2; i <n; i++) { 
    				int sqrt=(int) Math.sqrt(i);
    				for(int num:list){
    					if(i%num==0){
    						continue A;
    					}
    					else if(num>sqrt)
    						break;
    				}
    				list.add(i);
    			}
    		}
    	//欧拉筛
    	public static int [] getPrime(int n) {
    		int [] list=new int[n+1];
    		int [] prime =new int[n+1];
    		int count=0;
    		for(int i =2;i<=n;i++) {
    			if(list[i]==0)prime[count++]=i;
    			for(int j=0;j<count&&i*prime[j]<=n;j++) {
    				list[prime[j]*i]=1;
    			}
    			
    		}
    		
    		return Arrays.copyOf(prime, count);
    		
    	}
    
    }
    
    

    结果如图所示:
    在这里插入图片描述
    显而易见的,还是欧拉筛顶

    (ง •_•)ง

  • 相关阅读:
    sp3485在rk3288上的应用
    wk2124 在 rk3288 上的适配与调试
    Android自定义View实现一个状态切换开关
    SQLite数据库入门
    Android如何动态申请应用权限?
    APK 如何实现应用热更新功能?
    Android 如何通过代码安装 APK?
    Android.mk 中如何拷贝任意文件
    Linux 下网络 IO 的多路复用
    Android hideSoftInputFromWindow 不能隐藏软键盘怎么办?
  • 原文地址:https://www.cnblogs.com/a1439775520/p/13075212.html
Copyright © 2011-2022 走看看