搜狐暢遊2019秋招筆試真題------------學數學

學數學

題目描述

數學老師正在教授小暢和小遊兩個人素數的概念。爲了幫助鞏固兩人的知識,老師說出一個數,要求小遊和小暢合作,每人說出一個素數,使得兩人說出的素數的和剛好等於老師說出的數。請編寫程序計算兩個人說出的素數對的個數。如,老師說10,小暢和小遊可以說出兩對素數,分別爲(5,5)和(3,7)

輸入描述

輸入包括一個整數n (3<=n<=1000)

輸出描述

輸出符合條件的素數對的個數

輸入樣例

10

輸入樣例

2

 

package Test;
import java.util.Collection;
import java.util.HashMap;
import java.util.Scanner;

public class TestString{
	
	public static void main(String[] args) {
		Scanner s = new Scanner (System.in);
		HashMap Map =new HashMap ();
		int n =s.nextInt();
		for(int j =1;j<=(n/2)+1; j++) {
			if(isPrime(j)&& isPrime(n-j)) {    //如果j和(n-j)都爲真 ,則進入下一個判斷
				if(!Map.containsKey(j)&& !Map.containsKey(n-j)) {   
				Map.put(j, n-j);
//				System.out.println(j + " " + (n-j) );
				}
			}
		}
		System.out.println(Map.size());
	}
	
	
	private static boolean isPrime (int target) {    //isPrime 判斷傳入是否爲素數
		if(target==1) {
			return false;
		}
		if(target<=3) {
			return true;
		}
		for(int i = 2; i<= (target/2); i++) {
			if(target%i==0) {
				return false;
			}
		}
		return true;
		
	}
	
}

解題思路:

首先進入for循環 , isPrime函數主要是判斷傳入的數是否爲素數,如果是則返回true,否則返回false。第二個if語句是爲了防止出現重複的數字,比如(2,3)和(3,2)算一種。利用了Map數字Key不可重複進行判斷,最後輸出個數。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章