一个很无奈的问题

accsk 2004-04-28 01:36:31
class sushu extends Thread
{
private int cnt=0;
private int a;
private int b;
public sushu(int m,int n)
{
a=m;
b=n;
}
public int set()
{

int i,j;
for(i=a+1;i<b;i++)
{ for(j=2;j<i/2;j++)
if(i%j!=0)
continue;
else if(j>=i/2)
cnt++;
}

return cnt;
}
public void run()
{
System.out.println("cnt="+set());
}
}
public class twothread
{
public static void main(String args[])
{
sushu b1=new sushu(2,10000);

b1.start();

}
}
我想算出2到10000的素数个数为什么就的不到结果呢 结果一直都是0
...全文
21 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
wandou999 2004-04-29
  • 打赏
  • 举报
回复
是不是溢出了!!
XKP 2004-04-28
  • 打赏
  • 举报
回复
增加了一个变量squareOfI
这部分
for(j=2;j<= squareOfI;j++){
if(i%j!=0)
continue;
else
break;
}
if( j > squareOfI ){
cnt++;
System.out.println( i );
}
算法改动了一下
看看~~




这个算法比较马马虎虎~
XKP 2004-04-28
  • 打赏
  • 举报
回复
class sushu extends Thread
{
private int cnt=0;
private int a;
private int b;
public sushu(int m,int n)
{
a=m;
b=n;
}
public int set()
{

int i,j, squareOfI;
for( i = a+1; i < b ;i++ ){
squareOfI = (int)Math.sqrt( (double)i );
for(j=2;j<= squareOfI;j++){
if(i%j!=0)
continue;
else
break;
}
if( j > squareOfI ){
cnt++;
System.out.println( i );
}

}
return cnt;
}
public void run()
{
System.out.println("cnt="+set());
}
}
public class Test7
{
public static void main( String args[] ){
sushu b1 = new sushu( 2,10000 );
b1.start();
}
}
sean_gao 2004-04-28
  • 打赏
  • 举报
回复
算法有问题吧?

for(j=2;j<i/2;j++)
if(i%j!=0)
continue;
else if(j>=i/2)
cnt++;

感觉结构混乱逻辑不清不知道你要干什么。

67,513

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧