Problem 49

問題描述:

 

The arithmetic sequence, 1487, 4817, 8147, in which each of the terms increases by 3330, is unusual in two ways: (i) each of the three terms are prime, and, (ii) each of the 4-digit numbers are permutations of one another.

There are no arithmetic sequences made up of three 1-, 2-, or 3-digit primes, exhibiting this property, but there is one other 4-digit increasing sequence.

What 12-digit number do you form by concatenating the three terms in this sequence?

 

解決問題:

 

public class Problem49 {

	public static boolean[] prime = new boolean[10000];
	
	public static boolean IsPrime(long number) {
		int begin = 2;
		int end = (int) Math.sqrt(number) + 1;
		for (int i = begin; i < end; i++) {
			if (number % i == 0)
				return false;
		}
		return true;
	}
	
	public static int[] find_prime(){
		int[] numbers = new int[5000];
		Arrays.fill(numbers, 0);
		
		int index = 0;
		for(int i=1001; i<10000; i=i+2){
			if(IsPrime(i)){
				numbers[index] = i;
				index++;
			}
		}
		return numbers;
	}
	
	public static boolean IsNumber(int number){
		int tmp = number;
		int ge = number%10;
		number = number/10;
		int shi = number%10;
		number = number/10;
		int bai = number%10;
		number = number/10;
		int qian = number;
		number = tmp;
		//1487, 4817, 8147
		int number1 = bai*1000+shi*100+qian*10+ge;
		int number2 = shi*1000+qian*100+bai*10+ge;
		System.out.println("number:"+number+",number1:"+number1+",number2:"+number2);
		if(!prime[number1]||!prime[number2]){
			return false;
		}else{
			if(number1-number==number2-number1){
				return true;
			}else{
				return false;
			}
		}
		
	}
	
	public static void main(String[] args){
		Arrays.fill(prime, false);
		for(int i=1001; i<10000; i++){
			if(IsPrime(i)){
				prime[i] = true;
			}
		}
		for(int i=1001; i<prime.length; i++){
			if(prime[i]){
				if(IsNumber(i)){
					System.out.println(i);
				}
			}
		}
	}
}

 

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