PAT乙级1007(Java)

我是研究僧i 提交于 2020-01-24 22:15:41
package PTA.self;

import java.util.Scanner;

/**
 * @author JianfeiChen
 * @date 2020/1/19 14:33
 * @Description 求相邻且差为2的素数个数。
 */
public class Main{
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int n = sc.nextInt();
        int count = 0;
        int primeNumber1;
        int primeNumber2 = -2;
        for (int i = 2; i <= n; i++) {
            if (isPrimeNumber(i)) {
                primeNumber1 = primeNumber2;
                primeNumber2 = i;
                if (primeNumber2 - primeNumber1 == 2) {
                    count++;
                }
            }
        }
        System.out.println();
        System.out.println(count);
    }

    public static boolean isPrimeNumber(int num) {
        if (num < 10) {
            return num == 2 || num == 3 || num == 5 || num == 7;
        }
        //因为任何一个数都不可能分解成两个大于其平方根的数的乘积.肯定只能分解为一个大于或等于其平方根,另一个小于或等于其平方根.
        for (int i = 2; i < Math.sqrt(num); i++) {
            if (num % i == 0) {
                return false;
            }
        }
        System.out.print(num + " ");
        return true;
    }
}

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!