1. 程式人生 > >for循環輸出素數探究【java】

for循環輸出素數探究【java】

累加 isp 每次 ava pre num image 得到 png

一、判斷953是不是為素數(質數)。

代碼:

 1  /**
 2     判斷953是不是為素數(質數)
 3     分析:
 4         素數指整數在一個大於1的自然數中,除了1和此整數自身外,沒法被其他自然數整除的數。
 5         假設953是素數,則:
 6         953 % 2 !== 0
 7         953 % 3 !== 0
 8         953 % 4 !== 0
 9         ……
10         953 % 952 !== 0
11         反推得出,只要953被2~952之間的任何一個整數整除,則953不是素數。
12 13 除數從2開始到952按照整數依次遞增,則用for循環表示為: 14 for(int i=2;i<953;i++){ 15 判斷953能否被i整數 16 如果能被整除,則953不是素數,結束循環,跳出去輸出“953不是素數” 17 如果不能被整除,則953是素數,結束循環,跳出去輸出“953是素數” 18 } 19 */ 20 21 public class IsPrime 22 { 23 public
static void main(String[] args){ 24 25 int num = 953; 26 boolean isPrime = true; // 標記數字num默認為素數 27 for(int i=2;i<num;i++) { 28 if(num%i==0) { // num能夠被2~num-1之間的自然數整數 29 isPrime = false; // 標記數字num為非素數 30 break; // 結束循環
31 } 32 } 33 34 System.out.println(isPrime?num+"是素數":num+"不是素數"); 35 36 } 37 }

代碼結果顯示:

技術分享

二、列出1~100之間的所有素數

代碼:

 1 /**
 2     列出1~100之間的所有素數
 3     分析:
 4         上面代碼片段表示判斷num為953的自然數是不是素數,
 5         假設num為937,則判斷937是不是素數,
 6         假設num為933,則判斷933是不是素數,
 7 
 8         因此將num設置為一個變量,利用for循環進行從1~100進行遞增,
 9         將上門的代碼片段放入該for循環中,判斷為素數就打印出來。
10 
11         for(int num=2;num<=100;num++) {
12 
13             判斷num是不是素數的代碼片段
14 
15         }
16 
17 */
18 
19 public class IsPrime
20 {
21     public static void main(String[] args){
22 
23         for(int num=2;num<=100;num++) {
24             boolean isPrime = true; // 標記數字num默認為素數
25             for(int i=2;i<num;i++) {
26                 if(num%i==0) {
27                     isPrime = false;
28                     break;
29                 }
30             }
31             if(isPrime) {
32                 System.out.print(num+" ");
33             }
34         }
35     }
36 }

代碼解釋說明:

技術分享

代碼結果顯示:

技術分享

三、列出1~100之間的所有素數,並每行顯示5個數。

代碼:

 1 /**
 2     列出1~100之間的所有素數,並每行顯示5個數。
 3     分析:
 4         從上例代碼中可以得到1~100之間的所有素數。
 5         要想每行顯示5個數,就是要知道每次素數得出的時候,知道它是第幾個出現的,然後進行累加
 6         當累加數字到5時,就換行。
 7 
 8         因此需要用一個標記來記錄每次素數輸出的次數。
 9 
10 */
11 
12 public class IsPrime
13 {
14     public static void main(String[] args){
15         
16         int count = 0; // 計數器,用來在每次素數打印時,記錄次數。
17         for(int num=2;num<=100;num++) {
18             boolean isPrime = true; // 標記數字num默認為素數
19             for(int i=2;i<num;i++) {
20                 if(num%i==0) {
21                     isPrime = false;
22                     break;
23                 }
24             }
25             if(isPrime) {
26                 System.out.print(num+" ");
27                 count++; // 每打印一個素數就記錄一次
28                 if(count%5==0) { // 每計數器累計記錄5次,就換行一次。
29                     System.out.println();
30                 }
31             }
32         }
33     }
34 }

代碼變形:計數器如果實現每5次累計之後,就置零也可以達到相應的計數效果。 將上述25行~31行代碼進行置換以下代碼,即可:

1 if(isPrime) {
2   System.out.print(num+" ");
3   count++; // 每打印一個素數就記錄一次
4   if(count==5) { // 計數器累計到數字5時,就換行一次
5      System.out.println();
6      count = 0; // 計數器進行置零
7     }
8 }

代碼結果顯示:

技術分享

四、輸出9*9乘法表

代碼:

 1 /**
 2     輸出顯示9*9乘法表
 3     1*1=1
 4     1*2=2 2*2=2
 5     1*3=3 2*3=6 3*3=9
 6     1*4=4 2*4=8 3*4=12 4*4=16
 7     ……
 8     1*9=9 2*9=18 ……        ……       9*9=81
 9 
10     分析:按照每行和每列進行規律分析
11         - 表格共9行,
12         - 每第幾個行輸出需要共幾個等式
13 
14         恒等式格式為 i*j=c
15             · 每行i從1開始遞增到j,表示為每第j行輸出可以輸出共i個等式
16                 因此使用for循環表示為:
17                 for(int i=1;i<=j;j++) {
18                     ……
19                 }
20             · 表示第j行
21                 for(int j=1;i<=9;j++) {
22                     輸出一行  //該循環體執行一次,就換行一次。
23                 }
24         因此第一個for循環體需要在第二個for循環體之內。
25 */
26 
27 public class Test03
28 {
29     public static void main(String[] args) {
30         for(int j=1;j<=9;j++) {
31             for(int i=1;i<=j;i++){
32                 System.out.print(i+"*"+j+"="+i*j+" "); // i從1~j循環顯示,第j行需要顯示1~j個恒等式
33             }
34             System.out.println();    // 每上面的i循環體執行一次結束,即該行顯示完畢,就換行一次
35         }
36     }
37 }

代碼結果顯示:

技術分享

for循環輸出素數探究【java】