1. 程式人生 > >Java基礎知識複習(四)-- 對二維陣列排序+求質數的個數

Java基礎知識複習(四)-- 對二維陣列排序+求質數的個數

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;
	    }
    
}