创建一个数组,存储2-100之间的素数
法一:
public class ArraySuShu{
public static void main(String[] args){
//找出2-100之间的素数的个数
int x=0;//记录素数的个数
int z=1;//把素数挑出来
int[] a = new int[99];
for(int i=2;i<a.length+2;i++){
a[i-2]=i;
}
for(int i=2;i<=100;i++){
boolean y = false;//标识
for(int j=2;j<i/2;j++){//代码优化i-1优化为i/2
if(i%j==0){
//System.out.println(i+"不是素数");
y = true;//标识
break;
}
}
//如果标识与最初的一致,证明上边for循环里的if从来没有执行过
//!y相当于y==false
if(!y){
z=i;
System.out.println(i+"是素数");
x++;
System.out.println(z);
a[x-1]=z;
}
}
//创建数组
int[] b = new int[x];
for(int i=0;i<b.length;i++){
b[i]=a[i];
}
for(int v:b){
System.out.println(v);
}
}
}
法二:
public class ArraySuShu2{
public static void main(String[] args){
int loc = 0;//记录2-100之间素数的个数
//找出2-100间的素数,一个一个查找
for(int i=2;i<101;i++){
//判断这个数是不是素数
boolean tag = false;//标记
for(int j=2;j<i-1;j++){
if(i%j==0){
//System.out.println(i+"不是素数");
tag=true;
break;
}
}
if(!tag){
//System.out.println(i+"是素数");
loc++;
}
}
System.out.println("一共有"+loc+"个素数");
int[] sushu = new int[loc];
int index=0;
for(int i=2;i<101;i++){
//判断这个数是不是素数
boolean tag = false;//标记
for(int j=2;j<i-1;j++){
if(i%j==0){
//System.out.println(i+"不是素数");
tag=true;
break;
}
}
if(!tag){
//System.out.println(i+"是素数");
//loc++;
sushu[index++]=i;
}
}
System.out.println("这个素数数组为:");
for(int v:sushu){
System.out.print(v+"\t");
}
}
}
空间占用小,执行效率慢
法三:执行效率高,空间占用大
public class ArraySuShu3{
public static void main(String[] args){
int[] array1 = new int[50];//创建一个组够长的数组,50就够了
//找出素数,存到数组里,多余的元素为0
int index=0;
for(int i=2;i<101;i++){
boolean tag = false;
for(int j=2;j<i-1;j++){
if(i%j==0){
//System.out.println(i+"不是素数");
tag=true;
break;
}
}
if(!tag){
//System.out.println(i+"是素数");
array1[index++]=i;
}
}
//System.out.println(index);
int[] array2 = new int[index];//创建一个新数组,把array1里的素数存进去
for(int i=0;i<array2.length;i++){
array2[i]=array1[i];
}
array1 = null;//此时已经不需要array1了,释放掉
//输出array2验证一下
System.out.println("这个数组为:");
for(int v:array2){
System.out.print(v+"\t");
}
}
}