java中求質數(素數)的問題

這篇筆記講講關於java中質數的問題。java

1、什麼是質數(素數)?spa

定義:質數又稱素數。一個大於1的天然數,除了1和它自身外,不能被其餘天然數整除的數叫作質數;不然稱爲合數。它能夠有無限個數。
code

 

2、java習題:輸出1-100以內的全部質數

這題有幾種解題思路:
blog

第一種思路:class

一、外層循環做爲被除數,內層循環做爲除數。循環

二、定義一個Boolean,標記外層循環數是否爲質數。默認爲 true。遍歷

三、內層循環結束,若是開關還爲true。即被除數爲質數,打印出來。程序

 代碼以下:im

 1 class Demo2{  2     public static void main(String args[]){
 3         //1既不是質數也不是和數,使用i從2開始。
 4         for(int i=2;i<=1000;i++){
 5             boolean flag = true;
 6             for(int j = 2;j < i;j++){
 7                 if(i % j==0){
 8                     flag = false;
 9                     break;//到了1000內的質數,就跳出循環,並輸出結果。
10                 }
11             }
12             if(flag){
13                 System.out.print(" "+i);
14             }
15         }
16     }
17 }

運行效果:查詢

 第二種思路:

一、這個程序用了兩層循環,外層循環列舉從2到100之間的每個整數(做爲被除數),而後在內層循環中用從2到它之之間的數去除它,若是找到一個可以整除它的數,內層循環將跳出。若是一張沒找到可以整除它的數,則當內層循環將2到它直接按的全部數都嘗試過一遍以後,內循環也跳出。

二、等到內層循環跳出以後,程序接着判斷j是否大於等於i,若是是上面的狀況,代表這個數是質數,因而將這個數打印出來。

 1 class Demo3{
 2     public static void main(String args[]){
 3         int i,j;
 4         for(i = 2;i < 100;i++){
 5             for(j = 2;j < i;j++){
 6                 if(i % j == 0)
 7                     break;
 8             }
 9             if(j>=i){
10                 System.out.print(" "+i);
11             }
12         }
13     }
14 }

 運行效果:

2、java習題:輸出0-100的質數和

 1 class Demo3{
 2     public static void main(String args[]){
 3         int sum = 0;
 4         int j = 2;
 5         // 找出1-100的質數之和
 6         for (int i = 2; i <= 100; i++) { // i值爲2,質數爲除去1和自身整除的數 j初始值爲2去除偶數
 7 
 8             for (j = 2; j < i; j++) { //內層循環遍歷查詢i的整除數
 9 
10                 if (i % j == 0) { //判斷當前i是否能夠整除k值
11                     break; //整除則跳出循環
12                 }
13             }
14             //若是當前內循環沒有正常結束j與i對比不成立
15             if (j >= i) { 
16                 sum += i; // 累計質數和
17                 System.out.println(i); //輸出質數
18             }
19         }
20                 System.out.println(sum); //輸出質數之和
21     }
22 }
相關文章
相關標籤/搜索