输出100内所有质数

输出100内所有质数

质数:素数,只能被1和他本身整除的自然数。

方法一

class Test {
	public static void main(String[] args) {	
	
		boolean isFlag = true;//标识i是否被j除尽,一旦除尽,重新定义其值	
	
		for(int i = 2;i <= 100;i++){//遍历100以内的自然数	
		
			
			for(int j = 2;j < i;j++){//j:被i除去
				
				if(i % j == 0){
					isFlag = false;
				}
				
			}
			if(isFlag == true){
				System.out.println(i);
			}
			//对isFlag重置
			isFlag = true;
		}
	}
}

对方法一进行优化

						
class Test {
	public static void main(String[] args) {
		
		boolean isFlag = true;//标识i是否被j除尽,一旦除尽,修改其值
		int count = 0;//记录质数的个数

		//获取当前时间距离1970-01-01 00:00:00 的毫秒数
		long start = System.currentTimeMillis();

		for(int i = 2;i <= 100000;i++){//遍历100000以内的自然数
			
			//优化二:对本身是质数的自然数是有效的。
			//原先的for(int j = 2;j < i;j++){//j:被i去除
			//优化后
			for(int j = 2;j <= Math.sqrt(i);j++){//j:被i去除,调用math中的一个2方法。
				
				if(i % j == 0){ //i被j除尽
					isFlag = false;
					break;//优化一:只对本身非质数的自然数是有效的。
				}
				
			}
			//
			if(isFlag == true){
				//System.out.println(i);
				count++;
			} 
			//重置isFlag
			isFlag = true;
		
		}

		//获取当前时间距离1970-01-01 00:00:00 的毫秒数
		long end = System.currentTimeMillis();
		System.out.println("质数的个数为:" + count);
		System.out.println("所花费的时间为:" + (end - start));//17110 - 优化一:break:1546 - 优化二:13

	}
}

方法二

class Test {
	public static void main(String[] args) {	
	
	
		for(int i = 2;i <= 100;i++){//遍历100以内数	
		
			boolean isFlag = true;//标识i是否被j除尽,一旦除尽,重新定义其值	
			
			for(int j = 2;j < i;j++){//j:被i除去
				
				if(i % j == 0){
					isFlag = false;
				}
				
			}
			if(isFlag == true){
				System.out.println(i);
			}
		}
	}
}

方法三(直接在方法一优化的基础上修改)

class Test {
	public static void main(String[] args) {
		
		
		int count = 0;//记录质数的个数

		//获取当前时间距离1970-01-01 00:00:00 的毫秒数
		long start = System.currentTimeMillis();

		label:for(int i = 2;i <= 100000;i++){//遍历100000以内的自然数

			for(int j = 2;j <= Math.sqrt(i);j++){//j:被i去除,调用math中的一个方法,开根号。
				
				if(i % j == 0){ //i被j除尽
					continue label;//如果发现直接被除尽,重新回到label,
				}
				
			}
			//能执行到此步骤的都是质数
			count++;
		}

		//获取当前时间距离1970-01-01 00:00:00 的毫秒数
		long end = System.currentTimeMillis();
		System.out.println("质数的个数为:" + count);
		System.out.println("所花费的时间为:" + (end - start));//17110 - 优化一:break:1546 - 优化二:13

	}
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章