Java实现欧拉筛与花里胡哨求质数高级大法的对比

Kiona ·
更新时间:2024-09-21
· 524 次阅读

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

import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.Arrays; import java.util.Date; public class 求指数 { public static ArrayList list = new ArrayList(); 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 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); } }

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

(ง •_•)ง
作者:南 墙



JAVA 欧拉

需要 登录 后方可回复, 如果你还没有账号请 注册新账号