打印100以内的质数及优化

`public class Demo3{
public static void main(String[] arg){

	//获取当前时间距离1970-01-01 00:00:00的毫秒数
	long start = System.currentTimeMillis();
	
	//标识 i 是否被 j 除尽,一旦除尽,修改其值
	boolean flag = true;
	
	//实现打印100000以内的质数
	System.out.println("100以内的质数:");
	for(int i=2;i<=100000;i++){   //遍历100以内的自然数
		for(int j=2;j<i;j++){
			//从2开始到(i-1)只要有一个 j 能整除 i,说明这个i不是质数,并修改标识符为false
			if(i%j == 0){  
				flag = false;
				
			}
			//优化方式一:遇到第一个j 能整除 i ,就退出循环,不用执行其他的 i%j(只对本身是非质数的自然数起到优化作用)
			break;
		}			
		if(flag == true){
			//当flage还是为true,说明上面所有的j都没有整除i,那么这个 i 就是质数,打印出来
			System.out.print(i + "\t");
		}	
		// 重置 flag 为true
		flag = true;
	}
	//获取当前时间距离1970-01-01 00:00:00的毫秒数
	long end = System.currentTimeMillis();
	
	//程序总耗时
	System.out.println("程序总耗时:"+(end-start) + "ms");
	//90232 优化一:9539  
}

} `

posted @ 2020-12-06 16:18  dog_IT  阅读(226)  评论(0编辑  收藏  举报