蓝桥杯第八届--第二题等差素数列

标题:等差素数列

2,3,5,7,11,13,….是素数序列。 
类似:7,37,67,97,127,157 这样完全由素数组成的等差数列,叫等差素数数列。 
上边的数列公差为30,长度为6。

2004年,格林与华人陶哲轩合作证明了:存在任意长度的素数等差数列。 
这是数论领域一项惊人的成果!

有这一理论为基础,请你借助手中的计算机,满怀信心地搜索:

长度为10的等差素数列,其公差最小值是多少?

注意:需要提交的是一个整数,不要填写任何多余的内容和说明文字



package com.huat.lanqiao;

import java.util.Scanner;

/**
 * 第八届蓝桥杯第二题等差素数列
 * @author Administrator
 *
 */
public class NO_2 {

	public static final int maxValue = 100000;
	
	public static int[] temp = new int[maxValue];
	
	public static void isPrimer(int n) {
		int i;
		for(i = 2;  i <= Math.sqrt(n); i++) {
			if(0 == n%i) {
				return;
			}
		}
		temp[n] = 1;
		return;
	}
	
	public static void main(String[] args) {
		int d,n ,i,j;	//d表示的是公差
		for( i = 2; i < maxValue; i++) {
			isPrimer(i);
		}
		
		for(d = 2 ;d < 1000; d++) {
			for(n = 2; n < 1000; n++) {
				//内层循环控制长度为10的连续素数列
				for(j = 0; j < 10; j++) {
					if(0 == temp[n + j*d]) {
						break;
					}
				}
				
				if( j == 10) {
					System.out.printf("%d-%d",d,n);
					return;
				}
			}
		}

	}
}

蓝桥杯第八届--第二题等差素数列_第1张图片



你可能感兴趣的:(练习题)