JAVA找素数

来源:百度知道 编辑:UC知道 时间:2024/06/22 09:09:04
public class MyData2{
public static void main(String[] s){
if (s.length < 1){
System.out.println("没有输入数据");
return;
}
int x= Integer.parseInt(s[0]);
//Integer是类int是类型
int xdata[] = getData(x);//把所有的素数存到数组
printData(xdata);
}

public static int[] getData(int x){
int n[]=new int[m];
l1:for ( int i=1 ; i<n.length; i++){
l2:for( int j=1 ; j*j<i;j++){
if(i%j==0){
int m=0;
n[m]=i;
m++;
}
else continue l1;
}
}
return n;
}
public static void printData(int xd[]){
for(int i=0;i<xd.length;i++){
System.out.print(xd[i]+" ");
}
}
}

比如说我输入的是5,可是结果为 4 0 0 0 0

不知道是什么原因 请各位不吝赐教

int n[]=new int[m];
你的m是在什么地方定义的呢?

修改如下:

public class MyData2 {
public static void main(String[] s) {
if (s.length < 1) {
System.out.println("没有输入数据");
return;
}
int x=0;
try{
x = Integer.parseInt(s[0]);
}catch(Exception e){
System.out.println("您输入的不是数字");
return;
}
// Integer是类int是类型
int xdata[] = getData(x);// 把所有的素数存到数组
printData(xdata);
}

public static int[] getData(int x) {
//这个方法里你的逻辑很混乱,我给你改了一下你看能不能看明白
int n[] = new int[x];
l1: for (int i = 1; i < n.length; i++) {
int j=(int) Math.pow(i,0.5);
int m=0;
l2: for (; j>1;j--) {
if (i % j == 0) {
m++;
continue l1;
}
}
if(m==0){
n[i]=i;
}
}
return n;
}

public static void printData(int xd[]) {
for (int i =