求素数,可以正常运行,但是结果错误(会输出1-1000),想问下是哪里错了怎么改呢?


package sushu;

public class changs {

    public static void main(String[] args) {
        // TODO Auto-generated method stub
        int data[];
        //生成数组
        data=new int[1000];
        //1)调用初始化(静态方法直接调用)
                DataInput(data);
                //2)筛选素数
                ProcessPrime(data);
                //3)打印素数
                PrintPrime(data);        

    }
    //数据初始化的静态方法
     static void DataInput(int data[]) 
     {
            for(int i=0;i<data.length;i++)
            {data[i]=i+1;}
        }
     
     //筛选素数
     static void ProcessPrime(int data[]) {
         int i,j,temp;
            for(i=1;i<data.length;i++) {
                if(data[i]==0) {
                    for(j=i+1;j<data.length;j++) {
                        if(data[j]!=0) {
                            temp=data[j]%data[i];
                            if(temp==0) 
                            {data[j]=0;}
                        }
                    }
                }
            }
}

     //完成素数打印
    static void PrintPrime(int data[]) {
        int i;
        for(i=0;i<data.length;i++) {
            if(data[i]!=0) {
                System.out.println("素数:"+data[i]);

                }
                }
            }
        }
        
        }
    

我想求1-1000的素数,但是最后输出结果是1-1000,怎么改呢?

我知道了,我有一行代码写错了;改完以后答案就正确了,谢谢

if(data[i]==0)改成if(data[i]!=0)