Java基礎知識複習(四)-- 對二維陣列排序+求質數的個數
阿新 • • 發佈:2018-12-30
1.練習-二維陣列排序
首先定義一個5X8的二維陣列,然後使用隨機數填充滿。
藉助Arrays的方法對二維陣列進行排序。
參考思路:
先把二維陣列使用System.arraycopy進行陣列複製到一個一維陣列
然後使用sort進行排序
最後再複製回到二維陣列。
package review3; import java.util.Arrays; import java.util.Random; public class Text6 { public static void main(String[] args) { int two[][] = new int[5][8]; int one[] = new int[40]; System.out.println("初始化二維陣列:"); //用10~99的隨機數初始化二維陣列 for(int i = 0;i < 5; i++){ for(int j = 0;j < 8; j++){ two[i][j] = new Random().nextInt(90)+10; System.out.print(two[i][j]+" "); } System.out.println(); } //將二維陣列轉為一維陣列 for(int i = 0;i < 5; i++){ System.arraycopy(two[i], 0, one, 8*i, 8); } //對一維陣列進行排序 Arrays.sort(one); // System.out.println(Arrays.toString(one)); //將排序後的一維陣列轉為二維陣列 for(int i = 0;i < 5; i++){ two[i] = Arrays.copyOfRange(one, 8*i, 8*(i+1)); } //列印排序後的二維陣列 System.out.println("列印排序後的二維陣列:"); for(int i = 0;i < 5; i++){ for(int j = 0;j < 8; j++){ System.out.print(two[i][j]+" "); } System.out.println(); } } }
2.尋找一千萬以內的質數個數
質數概念: 只能被1和自己整除的數
舉例:
5只能被 1和5整除,所以是質數
8可以被2整除,所以不是質數
package review3; public class Test7 { public static void main(String[] args) { int sum = 0; int max = 1000*1000; for(int i=2; i<max; i++) { if(isPrime(i)) { sum++; } } System.out.println("一千萬以內的質數:"+sum); } public static boolean isPrime(int n) { if(n<2) return false;//1既不是質數也不是偶數 if(n == 2) return true;//2是質數 if(n%2 == 0) return false;//排除偶數 //去掉偶數的判斷 //進一步減少判斷的範圍 sqrt(n) for(int i=3; i<=Math.sqrt(n); i+=2) { if(n%i == 0) return false; } return true; } }