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以内素数的和!!
大侠快来帮我解决下!!

解决方案 »

  1.   

     System.out.println(i);
    这样改。
      

  2.   

    因为你的算法有错误啊
    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;
                   
            
        }}
      

  3.   

    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);
    }
    }
      

  4.   

    #2
    你这个不行啊 我要求是输出100以内素数的全部和,你这个输出就死一个true
      

  5.   

    你在最后一行增加一个打印sum不就行吗?你原来的方法就这样定义的,我也没有改而已。
      

  6.   

    但是 boolean类型 的类 不就是让返回 true 和false吗 如何返回一个数啊????
      

  7.   

    5#  还有问一下关于3#那个flag 用法  他应该是标记的意思吧  把它定义成别的字母可以吗???
      

  8.   

    那你改成返回int,return sum啊我就根本不知道你方法定义成boolean返回值做什么用,所以我也没有去修改罢了。你觉得不满足就修改啊!flag和我上面判断j == i是同样的意思,只是单独弄一个变量记住结果。