以输出质数为例进行程序的优化

本文介绍如何通过调整代码结构,如缩小除数范围和使用带标签的continue,提高在1-100000范围内输出质数的程序效率。通过实例展示了优化前后的代码对比及运行结果,旨在提供一种更高效的质数计数方法。
摘要由CSDN通过智能技术生成

题目要求

规定在1-100000范围内,输出所有的质数的个数,并尽量提高运算效率。
质数定义:只能被1和自己整除的数。

需要用到的结构

1、对计算开始和计算结束的时间节点赋值

long start = System.currentTimeMillis();
long end = System.currentTimeMillis();

2、取一个数(i)的开平方值

int j = Math.sqrt(i);

3、使用带标签的continue/break

label1:for(int i = 1;i <= 4;i++){
	label2:for(int j = 1;j <= 4;j++){
		if(i / j == 3){
		break label1;
		}
	}
}

实现功能的代码

class  PrimeNumTest{
	public static void main(String[] args) {
		long start = System.currentTimeMillis();
		boolean isFlag = true;
		int count = 0;

		for(int i = 2;i <= 100000;i++){
			for(int j = 2;j <= i-1;j++){
				if(i % j == 0){
					isFlag = false;
					break;
				}
			}
			if(isFlag == true){
				count++;
			}
			isFlag = true;
		}
		
		long end = System.currentTimeMillis();
		System.out.println("所花的时间为" + (end - start));
		System.out.println("质数的个数为" + count);
		System.out.println("by Asuka Truth");
	}
}

输出结果

在这里插入图片描述

优化

1.缩小除数j的取值范围

2.使用带标签的continue简化

优化后代码

class  PrimeNumTest2{
	public static void main(String[] args){
		int count = 0;
		long start = System.currentTimeMillis();

		label1:for(int i = 2;i <= 100000;i++){
			label2:for(int j = 2;j <= Math.sqrt(i);j++){//1.缩小除数j的取值范围
				if(i % j == 0){
					continue label1;//2.使用带标签的continue简化
				}
			}
			count++;//2.使用带标签的continue简化
		}

		long end = System.currentTimeMillis();
		System.out.println("所花的时间为" + (end - start));
		System.out.println("质数的个数为" + count);
		System.out.println("by Asuka Truth");
	}
}

优化后输出结果

在这里插入图片描述

联系方式

发现错误或想提出建议欢迎联系我
Email:AsukaTruth@163.com

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值