当前位置: 代码迷 >> Java相关 >> 求教筛法求素数的问题
  详细解决方案

求教筛法求素数的问题

热度:140   发布时间:2007-05-23 17:10:55.0
求教筛法求素数的问题
a) 创建一个boolean类型数组,每个元素都初始化为true。下标为素数的元素将保持true值不变,所有其他元素都将被设置为false。
b) 从下标2开始(忽略下标0和1),判断每个元素是否为true。如果是,则循环遍历数组的后续部分,将所有下标为该下标倍数的元素都设置为false。然后对下一个值为true的元素重复上面的过程。
当上述过程结束时,数组中为true的元素表示对应的下标是素数。
用一个长度为100的数组,判断并显示2~99之间的素数。
搜索更多相关的解决方案: 筛法  素数  

----------------解决方案--------------------------------------------------------

求教!!!!!!!!!!!!1


----------------解决方案--------------------------------------------------------
public class Sai{
public static void main(String []args){
boolean []a=new boolean[100];
for(int i=2;i<a.length;i++){
if(b(i)){a[i]=true;
System.out.println("a["+i+"]="+a[i]);
for(int j=4;j<a.length;j++){
if(j%i==0)a[j]=false;
// System.out.println("a["+j+"]="+a[j]);
}
}
}

}
static boolean b(int a){
for(int i=2;i<a;i++){
if(a%i==0||a==2){
return false;
//break;
}
return true;
}
return true;
}
}
----------------解决方案--------------------------------------------------------
public class Sai{
public static void main(String []args){
boolean []a=new boolean[100];
for(int i=2;i<a.length;i++){
if(b(i)){a[i]=true;
System.out.println("a["+i+"]="+a[i]);
for(int j=4;j<a.length;j++){
if(j%i==0)a[j]=false;
}
}
}

}
static boolean b(int a){
for(int i=2;i<a;i++){
if(a%i==0||a==2){
return false;
//break;
}
return true;
}
return true;
}
}
----------------解决方案--------------------------------------------------------
错啦

----------------解决方案--------------------------------------------------------
谢谢你帮忙先,不过你想想21和99是素数吗?- -
----------------解决方案--------------------------------------------------------
不是啊!!所以说错了!!让我在去修改!!

----------------解决方案--------------------------------------------------------
恩,谢谢先了,实在搞不来,弄了整整一天了
----------------解决方案--------------------------------------------------------

好了 经过我重新调整思路现在终于出来了,希望你能满意!!!
代码如下::
public class Sai{
public static void main(String []args){
boolean []a=new boolean[100];
int i,p=2;
for( i=2;i<a.length;i++){
a[i]=true;
}
for(i=2;i<a.length/2;i++){
a[i*2]=false;
p=2;
}
while(p*p<a.length){
p=p+1;
while(a[p]==false){
p++;
}
int t=p*p;
int s=2*p;
while(t<a.length){
a[t]=false;
t=t+s;
}
}
for(i=2;i<a.length;i++){
if(a[i])System.out.println("a["+i+"]="+a[i]);
}

}

}


----------------解决方案--------------------------------------------------------
  相关解决方案