2016搜狗校招编程题

题目定义两个偶数之间的距离为:两个数之间的素数的个数,

测试数据

第一行为偶数的个数 3
第二行为第一个偶数 4
第三行为第二个偶数 6
第四行为第三个偶数 12
三个偶数升序排列,三个数两两之间的距离为6

下面是我的代码,水平有限,

package rc4test;

import java.io.*;
import java.util.*;

class Juli {
    public static void main(String[] args) {
        int a[] = new int[10];
        int b = 0;
        int count = 0;
        Scanner cin = new Scanner(System.in);
        b = cin.nextInt();
        if (cin.hasNextInt()) {
            for (int i = 0; i < b; i++) {
                a[i] = cin.nextInt();
            }

        }
        // for (int m = 0; m < 3; m++) {
        // System.out.println("sdasd"+a[m]);
        // }
        for (int x = 0; x < (b - 1); x++)// 迭代距离和
        {
            for (int y = x + 1; y < b; y++) {
                count += countNum(a[x], a[y]);

            }
        }
        System.out.println(count);

    }

    public static int countNum(int b, int c) {// 计算两个数之间的距离
        int count = 0;
        boolean flag = false;
        for (int i = b + 1; i < c; i++) {
            if (isPrime(i))// 如果是质数
            {
                count++;
            }

        }
        //System.out.println(count);
        return count;
    }

    public static boolean isPrime(int a) {

        boolean flag = true;

        if (a < 2) {// 素数不小于2
            return false;
        } else {

            for (int i = 2; i <= Math.sqrt(a); i++) {

                if (a % i == 0) {// 若能被整除,则说明不是素数,返回false

                    flag = false;
                    break;// 跳出循环
                }
            }
        }
        return flag;
    }
}

水平有限。。。

你可能感兴趣的:(java,编程,java)