2021-05-22

创建一个数组,存储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");
		}
	}
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值