搜狐畅游2019秋招笔试真题------------学数学

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接: https://blog.csdn.net/qq_44313091/article/details/102554577

学数学

题目描述

数学老师正在教授小畅和小游两个人素数的概念。为了帮助巩固两人的知识,老师说出一个数,要求小游和小畅合作,每人说出一个素数,使得两人说出的素数的和刚好等于老师说出的数。请编写程序计算两个人说出的素数对的个数。如,老师说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不可重复进行判断,最后输出个数。

猜你喜欢

转载自blog.csdn.net/qq_44313091/article/details/102554577
今日推荐