筛选法求素数
package 素数总结;
import java.util.Arrays;
/**
* @author wangpei
* @version 创建时间:2017年8月15日 下午9:16:18
* 求1-n间的素数个数
* 素数:只有1和他本身两个因子的数字
* 不包含1
*
* 筛选法:若一个数是素数,则其倍数必不是素数,标记其倍数为非素数,最终得到的未被标记的即为素数
*/
public class 求素数的个数 {
public static void main(String[] args) {
test1(10);
}
public static void test1(int n){
int []flag=new int[n+1];
Arrays.fill(flag, 0);
flag[0]=1;
flag[1]=1;
for (int i = 2; i < n+1; i++) {
if(flag[i]==0){
for(int j=i;i*j<n+1;j++)
flag[i*j]=1;
}
}
for (int i = 0; i < n+1; i++) {
if(flag[i]==0)
System.out.print(i+" ");
}
}
}
还有一种比较笨的办法就是,判断n是不是素数,判断2到根号下n是不是整除n,若存在整除的,则非素数