2021-10-17

标题输出质数的多种方法

1.普通方法(运行时间慢)

public class PrimeNumberTest {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
          for (int i = 2; i < 100000; i++) { //遍历100以内的自然数
        	  boolean isFlag = true;
			 for (int j = 2; j < i; j++) { //j被i去除
				if(i % j == 0) { //i被j除尽
					isFlag = false;
					break;   //为了让非质数快速退出循环(一旦i发现有一个j被除尽,则可以判断为非质数),该语句只对非质数有用
				}
			}
			 if(isFlag == true) {
			    System.out.println(i);
			 }
		}
	}

}

2.两种方法优化后

public class PrimeNumberTest {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
          for (int i = 2; i < 100000; i++) { //遍历100以内的自然数
        	  boolean isFlag = true;
        	  for (int j = 2; j < Math.sqrt(i); j++) { //j被i去除      优化二:对本身是质数的自然数是有效的
                                                       //Math.sqrt(i)为对i开方,既选取了小于i并能和i整除的数
				if(i % j == 0) { //i被j除尽
					isFlag = false;
					break;   //优化二:为了让非质数快速退出循环(一旦i发现有一个j被除尽,则可以判断为非质数),
					         //该语句只对非质数有用
				}
			}
			 if(isFlag == true) {
			    System.out.println(i);
			 }
		}
	}

}

3.两种方法优化后加上,使用continue语句(最佳方法)

public class con_PrimeNumber {
	public static void main(String[] args) {
	int count = 0;
	System.out.println("100以内的所有质数如下:");
	label: for (int i = 2; i < 100; i++) { //遍历100以内的自然数
		 for (int j = 2; j < Math.sqrt(i); j++) { //j被i去除      优化二:对本身是质数的自然数是有效的
			                                       //Math.sqrt(i)为对i开方,既选取了小于i并能和i整除的数
			if(i % j == 0) { //i被j除尽 
				continue label;  //跳过当前这个数的循环
			}
		}
		 //能执行到这里的数,说明这个i没有被任何一个j 除尽
		 count++;
		 System.out.println(i);
		 }
	System.out.println("质数的个数为:"+count);		
	}
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值