蓝桥杯练习1:等差素数列

题目:

等差素数列

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

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

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

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

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

210

示例代码:

/**
 * 这是我的测试文档
* @Author:         QianQian
* @CreateDate:     2019/11/19 11:18
* @UpdateUser:     QianQian
* @UpdateDate:     2019/11/19 11:18
* @UpdateRemark:   修改内容
* @Version:        1.0
*/
public class Main {
    public static void main(String[] args) {
        int[] len = new int[1000]; //获取大小为1000的素数数组
        int i = 0;
        int j = 2;
        while (i < len.length) {
            if (isPrime(j)) {
                len[i] = j;
                i++;
            }
            j++;
        }
        for (int q = 1; q < 10000; q++) {
            hello(len, 10, q);

        }

    }
    public static void hello(int[] a, int len, int q) { //传入数组和等差数列长度和公差,如果该等差数列存在则输出该数列
        for (int i = 0; i < a.length; i++) { //从不同的点往后查询
            if (deomtwo(a, i, len, q) == 1) {
                print(a, len, i, q);
            }
        }

    }

    public static void print(int[] a, int len, int start, int q) { //在判断存在的情况下输出序列
        for (int i = 0; i < len; i++) {
            System.out.print(a[start] + q * i + " ");
        }
        System.out.println();
    }

    public static int deomtwo(int[] a, int now, int len, int q) { //判断在数组a中,是否存在起始位置为now,长度为len,公差为q的等差序列,如果存在,则返回该值的位置,不存在返回0
        for (int i = 0; i < len - 1; i++) {
            int m = deom(a, now, q);
            if (m == 0) {
                return 0;
            }
            now = m;
        }
        return 1;

    }

    public static int deom(int[] a, int now, int q) { //判断在数组a中,是否存在a[now]+q,如果存在,则返回该值的位置,不存在返回0
        for (int i = now + 1; i < a.length; i++) {
            if (a[i] == a[now] + q) return i;
        }
        return 0;
    }

    /**
     * 判断一个数是否为素数
     * @param a
     * @return
     */
    public static boolean isPrime(int a) {
        for (int i = 2; i < a; i++) {
            if (a % i == 0) return false;
        }
        return true;
    }
}

发布了58 篇原创文章 · 获赞 75 · 访问量 6664

猜你喜欢

转载自blog.csdn.net/qq_42013035/article/details/103505704
今日推荐