1. 程式人生 > >Java之判斷一個數是否為素數

Java之判斷一個數是否為素數

public class PrimeNumberTest {
    public static void main(String[] args) {
        long start = System.currentTimeMillis();
        System.out.println(isPrimeNumber(29));
        printNum(1000);
        long end = System.currentTimeMillis();
        System.out.println("\nTime spent: " + (end - start));
    }

    static boolean isPrimeNumber(int number) { //判斷是否為素數
        int sqrt = (int) Math.sqrt(number);
        for (int j = 2; j <= sqrt; j++)  //從2到number的算術平方根迭代
            if (number / j * j == number) //判斷j是否為number的因數, 是的話, 則number為合數, flag值變為false;
                return false;
        return true;
    }

    static void printNum(int number) { //打印出 <= number的所有質數
        int j = 0;
        for (int i = 2; i <= number; i++)
            if (isPrimeNumber(i) == true) {
                System.out.printf("%-9d", i);
                j++;
                if (j % 10 == 0) //每隔十個數字換行
                    System.out.println();
            }
    }
}

執行結果:

true
2        3        5        7        11       13       17       19       23       29       
31       37       41       43       47       53       59       61       67       71       
73       79       83       89       97       101      103      107      109      113      
127      131      137      139      149      151      157      163      167      173      
179      181      191      193      197      199      211      223      227      229      
233      239      241      251      257      263      269      271      277      281      
283      293      307      311      313      317      331      337      347      349      
353      359      367      373      379      383      389      397      401      409      
419      421      431      433      439      443      449      457      461      463      
467      479      487      491      499      503      509      521      523      541      
547      557      563      569      571      577      587      593      599      601      
607      613      617      619      631      641      643      647      653      659      
661      673      677      683      691      701      709      719      727      733      
739      743      751      757      761      769      773      787      797      809      
811      821      823      827      829      839      853      857      859      863      
877      881      883      887      907      911      919      929      937      941      
947      953      967      971      977      983      991      997      
Time spent: 140