Java计算100以内的质数

👎 一般解法:

class Test3{
          
   
	public static void main(String[] args){
          
   
		boolean flag = true;
		
		for(int i=2; i<=100; i++){
          
   
			// 从2~(i-1) 不包含它本身
			for(int j=2; j<i; j++){
          
   
				if(i % j == 0){
          
   
					flag = false;
					break;
				}
			}
			
			if(flag){
          
   
				System.out.println(i);
			}
			//重置flag
			flag = true;
		}
	}
}

👍 优化解法①:

class Test3{
          
   
	public static void main(String[] args){
          
   
		boolean flag = true;
		
		for(int i=2; i<=100; i++){
          
   
			// 从2~根号i,此时别忘了等号
			for(int j=2; j<=Math.sqrt(i); j++){
          
   
				if(i % j == 0){
          
   
					flag = false;
					break;
				}
			}
			
			if(flag){
          
   
				System.out.println(i);
			}
			//重置flag
			flag = true;
		}
	}
}

👍 优化解法②

class Test3{
          
   
	public static void main(String[] args){
          
   
		
		//使用带标签的label指定跳出当前循环
		label:for(int i=2; i<=100; i++){
          
   
			// 从2~根号i,此时别忘了等号
			for(int j=2; j<=Math.sqrt(i); j++){
          
   
				if(i % j == 0){
          
   
					continue label;//不是质数直接跳出
				}	
			}
	
			System.out.println(i);
		}
	}
}
经验分享 程序员 微信小程序 职场和发展