一个关于素数的小问题 输出问题

nbe01 2009-12-07 04:11:41

public class Sushu
{
public static void main(String args[])
{
int i=100;
if(c(i))//i为什么要初始化啊???

System.out.println(c(i));
}
static boolean c(int i)
{
int j,sum=0;
for(i=2;i<=100;i++)
{
for(j=2;j<100;j++)
{
if(i%j==0)

return false;
}
sum=sum+i;
}
return true;


}

}



为什么这个程序是什么都不输出啊,我想用一个子类封装判断素数,然后在求100以内素数的和!!
大侠快来帮我解决下!!
...全文
84 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
nbe01 2009-12-07
  • 打赏
  • 举报
回复
谢谢了
ChDw 2009-12-07
  • 打赏
  • 举报
回复
那你改成返回int,return sum啊

我就根本不知道你方法定义成boolean返回值做什么用,所以我也没有去修改罢了。你觉得不满足就修改啊!

flag和我上面判断j == i是同样的意思,只是单独弄一个变量记住结果。
nbe01 2009-12-07
  • 打赏
  • 举报
回复
5# 还有问一下关于3#那个flag 用法 他应该是标记的意思吧 把它定义成别的字母可以吗???
nbe01 2009-12-07
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 chdw 的回复:]
你在最后一行增加一个打印sum不就行吗?你原来的方法就这样定义的,我也没有改而已。
[/Quote]
但是 boolean类型 的类 不就是让返回 true 和false吗 如何返回一个数啊????
ChDw 2009-12-07
  • 打赏
  • 举报
回复
你在最后一行增加一个打印sum不就行吗?你原来的方法就这样定义的,我也没有改而已。
nbe01 2009-12-07
  • 打赏
  • 举报
回复
#2
你这个不行啊 我要求是输出100以内素数的全部和,你这个输出就死一个true
nianzhang747 2009-12-07
  • 打赏
  • 举报
回复
package com;

public class TeT {
public static void main(String args[]) {
int i = 100;
c(i);
}

static void c(int i) {
int j, sum = 2;
int flag = 0;
for (i = 3; i <= 100; i++) {
for (j = 2; j < i; j++) {
if (i % j == 0) {
flag = 1;
break;
} else {
flag = 0;
}

}
if (flag == 0) {
System.out.println(i);
sum = sum + i;
}

}
System.out.println(sum);
}
}
ChDw 2009-12-07
  • 打赏
  • 举报
回复
因为你的算法有错误啊


public class Sushu
{
public static void main(String args[])
{
int i=100;
if(c(i))//i为什么要初始化啊???不初始化你说i是什么值?

System.out.println(c(i));
}
static boolean c(int i)
{
int j,sum=0;
for(i=2;i<=100;i++)
{
for(j=2;j<i;j++) //应该要小于i才是,实际上更优化应该是小于Math.sqrt(i)
{
if(i%j==0)

break;//这里不能return,应该是
}
if(j == i) //如果j == i,则表示上面已经循环完一次,没有找到% == 0的,是素数
sum=sum+i;
}
return true;


}

}
方便面 2009-12-07
  • 打赏
  • 举报
回复
System.out.println(i);
这样改。

62,614

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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