ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

java案例:使用循环打印100以内的素数(两种方法实现)

2021-11-07 11:01:07  阅读:126  来源: 互联网

标签:遍历 java flag System 素数 循环 100


java案例:使用循环打印100以内的素数(两种方法实现)


前言

本节主要是讲解Java实现100以内素数的打印实现,如果可以进行代码的优化,我们就可以不断的修订代码,追求代码的效率和质量。


一、素数是什么?

素数,可以有两种描述(1除外)

  • 除了1和它本身,在没有其他因数,也就是只能写成“n = 1 x n“或“n = n x 1”这种形式
  • 在数学中往往会用整除这种语句来描述:当一个数只能被1和它本身整除时,这个数就叫做素数或质数。

二、解题思路

  • 首先外侧使用for循环遍历2-100的所有整数
  • 内层可以嵌套for循环,遍历此整数的因数
  • 在遍历的时候添加条件判断,通过给定的条件将符合要求的整数筛选出来
  • 打印输出结果

三,两种代码实现,嵌套for循环判断条件不同

3.1逻辑简单,新手容易想到此种方法,如果是练习可以使用,但是对于项目和产品,生产等方面,效率较低

/*
	案例题目:
	1.使用双重for循环打印 2 ~ 100之间所有的素数
*/

public class ForForPrimeTest {
	
	public static void main(String[] args) {
		
		System.out.println("\n==================第一种嵌套for循环条件==================");
		System.out.println("=========从2 ~ i - 1全部遍历,简单,效率低===========");
		// 1.外层for循环,遍历所有整数
		for(int i = 2; i <= 100; i++) {
			
			// 4.设置一个boolean类型的变量来作为标志,判断嵌套for循环中数据是否检测为素数
			boolean flag = true;
			
			// 2.内层for循环,遍历检测是否有除1和它本身之外的其它因数
			//从2 ~ i - 1全部遍历,简单,效率低
			for(int j = 2; j <= i - 1; j++) {
				
				// 3.如果有整除的数据,则此数据 i 不是素数
				if(0 == i % j) {
					flag = false;
					break;
				}
			}
			
			if(flag) {
				System.out.print(i + " ");
			}
		}
	}
}

3.2优化了判断条件,增加了数学思维,其实如果一个整数从2到整数的开平方根都无法整除此整数,那么后续的循环的整数也无法整除

  • 此处需要导入Java官方的Math库,方便我们使用sqrt进行开平方根。
/*
	案例题目:
	1.使用双重for循环打印 2 ~ 100之间所有的素数
*/

import java.lang.Math;

public class ForForPrimeTest {
	
	public static void main(String[] args) {

		System.out.println("\n==================第二种嵌套for循环条件==================");
		System.out.println("===========从2 ~ i的开平方根,提升效率,代码优化===========");
		for(int i = 2; i <= 100; i++) {
			
			// 4.设置一个boolean类型的变量来作为标志,判断嵌套for循环中数据是否检测为素数
			boolean flag = true;
			
			// 2.内层for循环,遍历检测是否有除1和它本身之外的其它因数
			//从2 ~ i的开平方根,提升效率,代码优化
			for(int j = 2; j <= Math.sqrt(i); j++) {
				
				// 3.如果有整除的数据,则此数据 i 不是素数
				if(0 == i % j) {
					flag = false;
					break;
				}
			}
			
			if(flag) {
				System.out.print(i + " ");
			}
		}
	}
}

总结

以上就是今天Java的100以内整数素数的判别。

标签:遍历,java,flag,System,素数,循环,100
来源: https://blog.csdn.net/qq_45834685/article/details/121188483

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有