栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

判断输出质素(素数)的程序及其优化

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

判断输出质素(素数)的程序及其优化

注释中有详解: 

class PrimeNumberTest {
	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){ //如果i被j除尽,则i可以被非1和它本身的数除尽,所以不为质数
					isFlag = false;//这个i不为素数的标志
				}
				
			}
			//
			if(isFlag == true){//isFlag == true则所对应的i为质数,输出
				System.out.println(i);
			}
			//重置isFlag
			isFlag = true;
		
		}
	}
}

优化后的:

class PrimeNumber {
	public static void main(String[] args) {
		
		boolean isFlag = true;//标识i是否被j除尽,一旦除尽,修改其值
		int count = 0;//记录质数的个数
		for(int i = 2;i <= 1000;i++){//遍历1000以内的自然数
			
			//优化二:
			//for(int j = 2;j < i;j++){//优化前
			for(int j = 2;j <= Math.sqrt(i);j++){//(优化后)j:被i去除
				//Math.sqrt(i)是指根号i的值,j <= Math.sqrt(i)与j < i效果一致但效
				//率更高运算次数更少,具体原因不做多讲解,可b站找个视频,打字讲解太麻烦了
				if(i % j == 0){ //i被j除尽
					isFlag = false;
					break;//优化一:一旦发现i可以被非1和它本身的数整除,说明其为非质素,用break
					//跳出内循环,执行下一轮
				}
				
			}
			//
			if(isFlag == true){
				//System.out.println(i);
				count++;
			}
			//重置isFlag
			isFlag = true;
		}
		System.out.println("质数的个数为:" + count);
	}
}

方法二:

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

		
		label:for(int i = 2;i <= 100000;i++){//遍历100000以内的自然数
			
			for(int j = 2;j <= Math.sqrt(i);j++){//j:被i去除
				
				if(i % j == 0){ //i被j除尽
					continue label;
				}
				
			}
			//能执行到此步骤的,都是质数
			count++;
		
		}

		
		System.out.println("质数的个数为:" + count);
		
	}
}

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/820679.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号