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);
}
}
结果如图所示:
显而易见的,还是欧拉筛顶
(ง •_•)ง
Java实现欧拉筛与花里胡哨求质数高级大法的对比的更多相关文章
- 【BZOJ 2186】 2186: [Sdoi2008]沙拉公主的困惑 (欧拉筛,线性求逆元)
2186: [Sdoi2008]沙拉公主的困惑 Description 大富翁国因为通货膨胀,以及假钞泛滥,政府决定推出一项新的政策:现有钞票编号范围为1到N的阶乘,但是,政府只发行编号与M!互质的钞 ...
- hdu2973-YAPTCHA-(欧拉筛+威尔逊定理+前缀和)
YAPTCHA Time Limit: 10000/5000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Su ...
- hdu2421-Deciphering Password-(欧拉筛+唯一分解定理+积性函数+立方求和公式)
Deciphering Password Time Limit: 5000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Oth ...
- POJ2909_Goldbach's Conjecture(线性欧拉筛)
Goldbach's Conjecture: For any even number n greater than or equal to 4, there exists at least one p ...
- 欧拉筛,线性筛,洛谷P2158仪仗队
题目 首先我们先把题目分析一下. emmmm,这应该是一个找规律,应该可以打表,然后我们再分析一下图片,发现如果这个点可以被看到,那它的横坐标和纵坐标应该互质,而互质的条件就是它的横坐标和纵坐标的最大 ...
- POJ-3126.PrimePath(欧拉筛素数打表 + BFS)
给出一篇有关素数线性筛和区间筛的博客,有兴趣的读者可以自取. 本题大意: 给定两个四位的素数,没有前导零,每次变换其中的一位,最终使得两个素数相等,输出最小变换次数.要求变换过程中的数也都是素数. 本 ...
- UVA12995 Farey Sequence [欧拉函数,欧拉筛]
洛谷传送门 Farey Sequence (格式太难调,题面就不放了) 分析: 实际上求分数个数就是个幌子,观察可以得到,所求的就是$\sum^n_{i=2}\phi (i)$,所以直接欧拉筛+前缀和 ...
- [SDOI2008]仪仗队(欧拉筛裸题)
题目描述 作为体育委员,C君负责这次运动会仪仗队的训练.仪仗队是由学生组成的N * N的方阵,为了保证队伍在行进中整齐划一,C君会跟在仪仗队的左后方,根据其视线所及的学生人数来判断队伍是否整齐(如右图 ...
- POJ3090 Visible Lattice Points 欧拉筛
题目大意:给出范围为(0, 0)到(n, n)的整点,你站在原点处,问有多少个整点可见. 线y=x和坐标轴上的点都被(1,0)(0,1)(1,1)挡住了.除这三个钉子外,如果一个点(x,y)不互质,则 ...
随机推荐
- 图数据库 Nebula Graph 是什么
图数据库(英语:Graph Database)是一个使用图结构进行语义查询的数据库.该系统的关键概念是图,形式上是点 (Node 或者 Vertex) 和边 (Edge 或者 Relationship ...
- DP之石子堆合并问题
相邻 环形 总结 (1)相邻:在一个圆形操场的四周摆放着n堆石子(n<= 100),现要将石子有次序地合并成一堆.规定每次只能选取相邻的两堆合并成新的一堆,并将新的一堆的石子数,记为该次合并的得 ...
- jstree 反选,测试400条数据左右有点卡
$("#reversecheckallmachines").on("change", function () { var checkedNodes = []; ...
- Linux常用命令~新手必知
ifconfig查看本机IP ls 查看当前目录下所有文件及文件夹 ll 以详细方式显示所有文件与文件夹.(相当于 ls -l 命令) pwd 显示当前目录路径 cd /user ...
- 【Socket编程】【第一节】【Socket基本原理和套接字】
参考http://c.biancheng.net/view/2351.html 一.scoket套接字(告诉你使用哪种数据传输方式) 这个世界上有很多种套接字(socket),比如 DARPA Int ...
- Gym101635C Macarons
题目链接:http://codeforces.com/gym/101635/attachments 题目大意: 给出一个 \(N \times M\) 的网格图,请你用 \(1 \times 1\) ...
- Intel FPGA Clock Region概念以及用法
目录 Intel FPGA 的Clock Region概念 Intel 不同系列FPGA 的Clock Region 1. Clock Region Assignments in Intel Stra ...
- 玩转java反射
玩玩JAVA反射 什么是反射 Java反射机制是在运行状态中,对于任意一个类,都能知道这个类的所有属性和方法:对于任何一个对象,都能够调用它的任何一个方法和属性:这样动态获取新的以及动态调用对象的方法 ...
- DQN(Deep Q-learning)入门教程(零)之教程介绍
简介 DQN入门系列地址:https://www.cnblogs.com/xiaohuiduan/category/1770037.html 本来呢,在上一个系列数据挖掘入门系列博客中,我是准备写数据 ...
- ExtJS定时和JS定时
ExtJS定时 //定时刷新待办事宜状态 var task={ run:function(){ //执行的方法或方法体 }, interval:5*60*1000 //5分钟 } //定时启动 Ext ...