看到题目突然有点兴趣就试着做了做:
param为指定数据public class FindPrimeGene { public static void main(String[] args) {
int param=1458;
int pa_sqrt=(int)param/2;
int[] result =new int[pa_sqrt];//实际不许要那么多,只是费事再计算
int[] prime_num = new int[pa_sqrt];
boolean isPrime=true;
int r_p=0,p_p=0;//两数组的标记
prime_num[p_p++]=2;
if(param%2==0)
result[r_p++]=2;
for ( int i=3;i<=pa_sqrt;i++) {
for (int j=0;j<p_p;j++) {
if(i%prime_num[j]!=0) {
isPrime=true;
continue;
}
else {
isPrime=false;
break;
}
}
if(isPrime) {
prime_num[p_p++]=i;
if(param%i==0)
result[r_p++]=i;
}
}
System.out.println("The prime numbers of "+param+" are:");
for(int i=0;i<r_p;i++)
System.out.print(" "+result[i]);
System.out.println();
System.out.println("The prime array is:");
for(int i=0;i<p_p;i++)
System.out.print(" "+prime_num[i]);
System.out.println();
}
}
param为指定数据public class FindPrimeGene { public static void main(String[] args) {
int param=1458;
int pa_sqrt=(int)param/2;
int[] result =new int[pa_sqrt];//实际不许要那么多,只是费事再计算
int[] prime_num = new int[pa_sqrt];
boolean isPrime=true;
int r_p=0,p_p=0;//两数组的标记
prime_num[p_p++]=2;
if(param%2==0)
result[r_p++]=2;
for ( int i=3;i<=pa_sqrt;i++) {
for (int j=0;j<p_p;j++) {
if(i%prime_num[j]!=0) {
isPrime=true;
continue;
}
else {
isPrime=false;
break;
}
}
if(isPrime) {
prime_num[p_p++]=i;
if(param%i==0)
result[r_p++]=i;
}
}
System.out.println("The prime numbers of "+param+" are:");
for(int i=0;i<r_p;i++)
System.out.print(" "+result[i]);
System.out.println();
System.out.println("The prime array is:");
for(int i=0;i<p_p;i++)
System.out.print(" "+prime_num[i]);
System.out.println();
}
}
if(r_p==0)
result[r_p++]=param;______________________________________
System.out.println("The prime numbers of "+param+" are:");
for(int i=0;i<r_p;i++)
System.out.print(" "+result[i]);
.........这是最直观的算法,如果要效率高的话,那就要使用更多的技巧,如获得一个因子后立即除以该因子再参与循环判断。