| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 559 人关注过本帖
标题:求教筛法求素数的问题
只看楼主 加入收藏
Arlix
Rank: 1
等 级:新手上路
帖 子:13
专家分:0
注 册:2007-4-11
收藏
 问题点数:0 回复次数:8 
求教筛法求素数的问题
a) 创建一个boolean类型数组,每个元素都初始化为true。下标为素数的元素将保持true值不变,所有其他元素都将被设置为false。
b) 从下标2开始(忽略下标0和1),判断每个元素是否为true。如果是,则循环遍历数组的后续部分,将所有下标为该下标倍数的元素都设置为false。然后对下一个值为true的元素重复上面的过程。
当上述过程结束时,数组中为true的元素表示对应的下标是素数。
用一个长度为100的数组,判断并显示2~99之间的素数。
搜索更多相关主题的帖子: 筛法 素数 
2007-05-23 17:10
Arlix
Rank: 1
等 级:新手上路
帖 子:13
专家分:0
注 册:2007-4-11
收藏
得分:0 

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

2007-05-23 20:11
fdx
Rank: 1
等 级:新手上路
帖 子:13
专家分:0
注 册:2007-5-23
收藏
得分:0 
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;
}
}
2007-05-23 20:52
fdx
Rank: 1
等 级:新手上路
帖 子:13
专家分:0
注 册:2007-5-23
收藏
得分:0 
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;
}
}
2007-05-23 20:54
fdx
Rank: 1
等 级:新手上路
帖 子:13
专家分:0
注 册:2007-5-23
收藏
得分:0 
错啦
2007-05-23 20:56
Arlix
Rank: 1
等 级:新手上路
帖 子:13
专家分:0
注 册:2007-4-11
收藏
得分:0 
谢谢你帮忙先,不过你想想21和99是素数吗?- -
2007-05-23 21:02
fdx
Rank: 1
等 级:新手上路
帖 子:13
专家分:0
注 册:2007-5-23
收藏
得分:0 
不是啊!!所以说错了!!让我在去修改!!
2007-05-23 21:06
Arlix
Rank: 1
等 级:新手上路
帖 子:13
专家分:0
注 册:2007-4-11
收藏
得分:0 
恩,谢谢先了,实在搞不来,弄了整整一天了
2007-05-23 21:08
fdx
Rank: 1
等 级:新手上路
帖 子:13
专家分:0
注 册:2007-5-23
收藏
得分:0 

好了 经过我重新调整思路现在终于出来了,希望你能满意!!!
代码如下::
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]);
}

}

}

2007-05-24 12:02
快速回复:求教筛法求素数的问题
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.041604 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved