Java:找出100以内的质数(一)。

Java:找出1~100之间的质数。

 质数(prime number)又称素数,有无限个。质数定义为在大于1的自然数中,除了1和它本身以外不再有其他因数

 由以上的定义我们可以延伸出另一种解释:这个数与除1之外小于它的数取余不为0,则这个数为质数。那么由此分析,解决这个问题需要用到循环结构,且需要嵌套。

定义i表示“这个数”,定义j表示“小于它的数”,在判断之前我们需要先遍历1~100之间所有的数,所以第一层循环即以“这个数”作为循环条件,第二层循环我们需要完成的工作是让所有“小于它的数”与之取余,如果等于0,则不是质数,都不为0,则为质数。有了这个思路,我们可以写出以下代码:

class TestLoopNest{
	public static void main(String[] args){  
		boolean b = true;//用来表示“这个数”是否为质数
		for(int i = 2;i <= 100;i ++){//100以内数的遍历
                //判断其是否为质数
			for(int j = 2;j < i;j ++){
				if(i % j == 0){
					b = false;
				}
			}
			if(b){//如果b为true,则输出i
				System.out.println(i);
			}
			b = true;//当判断完一个数之后,b的值重新赋成true
		}
	}
}

实现结果如下:

验证后无误。

【拓展】这种方法对于查找100以内的质数来说还是可以的,但是如果将100改成10000,100000,甚至是1000000呢?那么这种方式还是否同样好用呢?于是我做了如下尝试,将100改成10000,并在代码中添加时间计数器,看最后程序运行完毕需要的时间是多少。

class TestLoopNest{
	public static void main(String[] args){  
		boolean b = true;
		long start = System.currentTimeMillis();//获取系统当前累计毫秒数
		for(int i = 2;i <= 10000;i ++){
			for(int j = 2;j < i;j ++){
				if(i % j == 0){
					b = false;
				}
			}
			if(b){
				System.out.println(i);
			}
			b = true;
		}
		long end = System.currentTimeMillis();//再次获取当前累计毫秒数
		System.out.println("所花费的时间为" + (end - start) + "毫秒");
	}
}

运行结果如下:

 这仅仅只是将100改为了10000,运行效率就低了很多,当然代码运行效率与硬件也有关,身为程序员的我们为何不从根源上让代码更加简洁、轻便呢?如何提高效率,更好的解决问题,请查看我的第二篇文章。

  • 21
    点赞
  • 39
    收藏
    觉得还不错? 一键收藏
  • 6
    评论
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值