判斷一個整數是否為素數


題目:判斷101-200之間有多少個素數,並輸出所有素數

這道題目,需要使用for循環去遍歷出所有的需要判斷的元素,並再次使用for循環,對元素進行是否是素數的判斷.

素數:只能被1和自身整除的數

那么就要去考慮如何寫判斷條件了.這道題目也花了我一些的功夫,明知道很簡單,但由於程序寫的太少和編程思想的缺少,墨跡了很久.

1)小於2的數(即1)不是素數

2)對於大於2的一個整數n,要判斷n能否整除2~(n-1),只要滿足了一次,這個n就肯定不是素數了.

看了網上的一些代碼,學到了一招,采用flag來記錄程序中的判斷的情況,對於菜鳥養成編程思維很有幫助.(本題中可以直接將true或者false返回)

 1 //打印出一個區間內的素數及其個數
 2     private static void method() {
 3         int count = 0;
 4         for(int i = 2;i <= 200;i++){
 5             boolean flag = true;
 6             for(int j = 2;j < i;j++){
 7                 if(i % j == 0){
 8                     flag = false;
 9                     break;
10                 }
11             }
12             if(flag == true){
13                 count++;
14                 System.out.println(i);
15             }
16         }
17         System.out.println(count);
18     }
 1 //判斷輸入的一個數n是否是素數(讓n和(2-n-1)的數都做一遍取余運算)
 2     private static boolean method1(int n) {
 3         if(n < 2){
 4             return false;
 5         }
 6         for(int i = 2;i < n;i++){
 7             if(n % i == 0){
 8                 return false;
 9             }
10         }
11         return true;
12         //return true;
13     }

搜索過后發現,網上有很多的實現的方法,一種比一種簡單,代碼簡化了很多.

其中的一種簡化是,減少判斷的區間,可以選擇直接將偶數的情況在一開始就去除掉.

 1     //改進算法:可以直接將偶數的情況去除掉
 2     private static boolean method2(int n){
 3         if(n < 2)
 4             return false;
 5         if(n % 2 == 0)
 6             return false;
 7         for(int i = 3;i < n;i++){
 8             if(n % i == 0)
 9                 return false;
10         }
11         return true;
12     }

其余的簡化算法我沒有一一去研究.


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM