JAVA 인 코딩 훈련(7)

2131 단어 JAVA
중국어:그동안 Python 개발 에 전념 했 는데 JAVA 쪽 인 코딩 이 잊 혀 질 것 같 아 요.그래서 문 제 를 찾 아서 훈련 을 했 습 니 다.
E-version:so a long time I major in python dev. many aspects about java almost forget。so now I found some problems to practice。
제목:
AS-LIKE
짝수 가 있 음 을 알 고 있 습 니 다.두 소수 가 더 해 진 값 은 이 짝수 입 니 다.하나의 수치(5,1000)를 구하 고 차이 가 가장 작은 두 개의 소 수 를 구하 세 요.
Given a odd number, there are two primes can equal this number by plus them together。 within the limit value (5,1000], please 
programing the min difference between two figures.
 
실현:
IMPL:
        public static class PrimePair {
		public int primeMin;
		public int primeMax;
	}

	public static PrimePair findPrimeNumber(int number) {
		
		// params valid check;
		if (number <= 5 || number > 1000 || number % 2 == 1)
			return null;
		
		// use array not ArrayList, easy to acquire;
		int[] array = new int[200];
		
		// array length;
		int pos = 1;
		// initial value;
		array[0] = 2;
		
		
		for (int i = 3; i < number; i++) {
			boolean prime = true;
			for (int j = 2; j <= Math.sqrt(i); j++) {
				if (i % j == 0) {
					prime = false;
				}
			}
			if (prime) {
				array[pos++] = i;
			}

		}// above block calculate all the prime number with given range;
		
		
		int maxindex = pos - 1;
		int minindex = 0;
		int min = 0;
		int primeMax = 0;
		int primeMin = 0;
		
		// should use > and =, for this situation: 6=3+3;
		while (maxindex >= minindex) {
			
			if ((array[minindex] + array[maxindex]) > number) {
				maxindex--;
			} else if ((array[minindex] + array[maxindex]) < number) {
				minindex++;
			} else {
				if (min == 0) {
					min = array[maxindex] - array[minindex];
					primeMax = array[maxindex];
					primeMin = array[minindex];
				} else {
					if (min > array[maxindex] - array[minindex]) {
						primeMax = array[maxindex];
						primeMin = array[minindex];
					}
				}
				// this statement is vital, it will continue the cycle;
				maxindex--;
			}
		}

		PrimePair pair = new PrimePair();
		pair.primeMax = primeMax;
		pair.primeMin = primeMin;

		return pair;
	}

 

좋은 웹페이지 즐겨찾기