Java优化之输出十万以内的质数

(1)未经优化时所耗费的时间:

public class PrimeNumber {
    public static void main(String[] args) {
        long start = System.currentTimeMillis();
        boolean flag = false;
        for(int i = 2; i <= 100000; i++){
            for(int j = 2; j < i; j++){
                if(i % j == 0){
                    flag = true;
                }
            }
            if(flag == false)
                System.out.print(i+" ");
            flag = false;
        }
        long end = System.currentTimeMillis();
        System.out.println("\n"+(end - start));
    }
}

其所耗费的时间为:27038ms

(2)优化一:内层循环的判断,当false已经为true的时候,即可跳出内层循环

public class PrimeNumber {
    public static void main(String[] args) {
        long start = System.currentTimeMillis();
        boolean flag = false;
        for(int i = 2; i <= 100000; i++){
            for(int j = 2; j < i; j++){
                if(i % j == 0){
                    flag = true;
                    break;
                }
            }
            if(flag == false)
                System.out.print(i+" ");
            flag = false;
        }
        long end = System.currentTimeMillis();
        System.out.println("\n"+(end - start));
    }
}

其所耗费的时间为:2424ms

(3)优化二:内层循环只需循环到i的根号时,即可结束(注意包括i的根号)

public class PrimeNumber {
    public static void main(String[] args) {
        long start = System.currentTimeMillis();
        boolean flag = false;
        for(int i = 2; i <= 100000; i++){
            for(int j = 2; j <= Math.sqrt(i); j++){
                if(i % j == 0){
                    flag = true;
                    break;
                }
            }
            if(flag == false)
                System.out.print(i+" ");
            flag = false;
        }
        long end = System.currentTimeMillis();
        System.out.println("\n"+(end - start));
    }
}

其所耗费的时间为:191ms

时间: 2024-08-11 03:25:08

Java优化之输出十万以内的质数的相关文章

JavaScript 斐波那契数列 倒序输出 输出100以内的质数

|--斐波那契数列 1 //求斐波那契数列第n位 2 var n = parseInt(window.prompt('输入你要求的斐波那契数列的位数')); 3 var first = 1, 4 second = 1, 5 third; 6 if (n > 2) { 7 for (var i = 0; i < n - 2; i++) { 8 third = first + second; 9 first = second; 10 second = third; 11 document.writ

java练习题:输出100以内与7有关的数、百马百担、打分(去掉最高、最低分)、二分法查找数据

1.输出100以内与7有关的数 注: 这些数分为三类:(1)7的倍数,(2)个位数字是7的数,(3)十位数字是7的数 int i=1; System.out.println("输出100以内与7有关的数:"); for(i=1;i<=100;i++){ if(i%10==7 | i%7==0|i/10==7 ){//符合条件的三类数 System.out.println(i); } else{ } 2.百马百担 注: 有一百匹马,驮一百担货,大马驮3担,中马驮2担,两只小马驮1担

输出100000以内的质数 (优化2)

class TestPrinmeNumber { public static void main(String[] args) { //boolean flag= false; long start = System.currentTimeMillis(); l:for(int i = 2;i <=100000;i++){//实现100以内的循环 for(int j=2; j < Math.sqrt(i);j++){//优化3 if(i % j==0){ //flag = true; //br

PHP面试题之实现输出100以内的质数

最近求职时的其中一道面试题: 求100之内的质数 <? //求100以内质数 for ($i = 1; $i <= 100; $i++) { $k = 0; for ($j = 1; $j < $i; $j++) { if ($i % $j == 0) { $k++; } } if ($k == 1) { echo $i; echo "  "; } } ?>

Java小练习 输出100内所有质数

分析:所谓质数,就是不能被除了1和自身外的数所整除的数 如:这个数是i,那么对于从2开始到i的数j,有i%j!=0,直到i==j时才有i%j==0; 从这个思路出发,算法如下 1 public class printPrime{ 2 public static void main(String args[]) { 3 for (int i = 2; i < 101; i++) { 4 int j = 2; 5 while (i % j != 0) { 6 j++; 7 } 8 if (i ==

输出1000以内的素数

记得以前也写过,当时不会写是看了别人的答案才写出来的,今天再写发现还是不会写,看来上次是根本就没有学会呀,不过苦思冥想还是想出来一种不那么好的方法,好在自己理顺了思路,是自己研究出来的成果. 输出1000以内的素数,那么只需要每次取出一个数,然后把这个数依次除以从2到它本身,看余数,如果余数有0的情况,那么一定不是素数,如果全部除完了发现都没有余数为0的情况,那么一定是素数. 比如判断7是不是素数,必须看7%[2,6]的结果. 容易发现,不是素数这个条件比较容易满足,因为只要有一个余数为0的情况

PrimeNumber.java【输出100-200之间的质数:只能被1和本身整除的数】

//功能:输出100-200之间的质数:只能被1和本身整除的数 public class PrimeNumber{ public static void main(String [] args){ for(int i=101;i<200;i++){ boolean flag=true;//标志位,当flag为true时是质数,当flag为false时不是质数 for(int j=2;j<i;j++){ if(i%j==0){ flag=false; break; } } /*if(flag){

【Python实践-7】输出100以内的所有素数

1 #输出100以内的所有素数,素数之间以一个空格区分(注意,最后一个数字之后不能有空格). 2 i=2 3 l=[] 4 while i<100: 5 k=0 6 for j in range(2,i): 7 if i%j==0: 8 k=k+1 9 if k==0: 10 l.append(i) 11 i=i+1 12 print(" ".join(str(i) for i in l)) 知识点: 1.素数,又称质数,定义为在大于1的自然数中,除了1和它本身以外不再有其他因数

求100以内的质数

求100以内的质数. 1 num = [2] 2 i = 3 3 while i < 101: 4 j = 2 5 while j < i: 6 if i % j == 0: 7 break 8 else: 9 j = j + 1 10 continue 11 else: 12 num.append(i) 13 i = i + 1 14 print(num)