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

    科技2023-12-31  69

    以输出质数的两种形式为例进行程序的优化

    题目要求需要用到的结构实现功能的代码输出结果优化1.缩小除数j的取值范围2.使用带标签的continue简化 优化后代码优化后输出结果联系方式

    题目要求

    规定在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 或站内联系

    Processed: 0.010, SQL: 8