一、判斷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 }
代碼結果顯示: