package namespace;
import java.io.*;
import java.util.*;
public class Study
{
//筛选法求素数
public static void fun(int n)
{
int a[]=new int[n+1];
Arrays.fill(a,0);//把数组的数据初始化为0
for(int i=2;i<=Math.sqrt((double)n);i++)
{
for(int j=i+i;j<=n;j=j+i)
{
a[j]=1;
}
}
for(int i=2;i<=n;i++)
{
if(a[i]==0)
System.out.println(i);
}
}
//筛选法改进版,只存储奇数
public static void primeImprove(int n)
{
n =(int)Math.floor(((double)(n-0.000001))/2); // 3 - n 的所有奇数
boolean data[] = new boolean[n];
Arrays.fill(data, true);
System.out.println(2);
for(int i=0;i<Math.sqrt(n);i++)
{
if(data[i] == true)
{
int temp = 2*i+3+i;
while(temp<n)
{
data[temp] = false;
temp = temp+2*i+3;
}
}
}
/*
* 3 5 7 9 11 13 15 17 19 21 23 25 27 29
* 第一步:把14 个单元为true (第个单元的代表的数为2*i=3,即0代表3,1代表5)
* 第二步:i = 0; prime[0]=true,[3],[6],[9],[12]false;
* i= 1 prime[1] =true [6],[11] 为false
* */
for(int i=0;i<n;i++)
{
if(data[i]==true)
{
System.out.println(i*2+3);
}
}
}
public static void main(String args[])
{
fun(100);
}
}