您的位置:首页 > 其它

筛选法求素数

2017-08-15 22:43 197 查看
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,若存在整除的,则非素数
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: