標籤:顯示 boolean isp span system ges img code color
一、判斷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 !== 011 反推得出,只要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 IsPrime22 {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 IsPrime20 {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 IsPrime13 {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=c15 · 每行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 Test0328 {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】