JAVA1007 素数对猜想 (20分) PAT乙级 PAT (Basic Level) Practice (中文)

Posted 爱做梦的鱼

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了JAVA1007 素数对猜想 (20分) PAT乙级 PAT (Basic Level) Practice (中文)相关的知识,希望对你有一定的参考价值。

你是最棒的

前言

学得越多,不会得越多
种一颗树的最佳时间是十年前,其次就是现在

pat所有题解代码都会陆续上传到Github,请好兄弟们自行下载:https://github.com/233zzh/PAT
qq交流群:1107710098

题目:1007 素数对猜想 (20分)

题目链接:https://pintia.cn/problem-sets/994805260223102976/problems/994805317546655744

让我们定义 d ​ n d_​n dn​​ 为: d ​ n ​ ​ d_​n​​ dn = p n + 1 p_n+1 pn+1​​ − p n p_n pn,其中 p ​ i p_​i pi 是第i个素数。显然有 d 1 d_1 d1​​ =1,且对于 n>1 有 d ​ n d_​n dn 是偶数。“素数对猜想”认为“存在无穷多对相邻且差为2的素数”。

现给定任意正整数 N(< 1 0 5 10^5 105​ ),请计算不超过N的满足猜想的素数对的个数。

输入格式:
输入在一行给出正整数N。

输出格式:
在一行中输出不超过N的满足猜想的素数对的个数。

输入样例:
20

输出样例:
4

要点:

第二次for循环要用 2 ~ 平方去判断i 能不能被整除,而不是2 ~ i

代码

import java.util.Scanner;

/**
 * Created by IntelliJ IDEA.
 *
 * @Author: 张志浩 Zhang Zhihao
 * @Email: 3382885270@qq.com
 * @Date: 2020/11/26
 * @Time: 22:08
 * @Version: 1.0
 * @Description: Description
 */
public class Prime2 
    public static void main(String[] args) 
        Scanner sc = new Scanner(System.in);
        int N = sc.nextInt();
        sc.close();
        int first_prime = 2;
        int count = 0;
        for (int i = 3; i <= N; i++) 
            int j;
            int temp = (int) Math.sqrt(i);
            for (j = 2; j <= temp; j++) 
                if (i % j == 0) 
                    break;
                
            
            if (j == (temp + 1)) 
//                System.out.println(i);
                if ((i - first_prime) == 2) 
                    count++;
                
                first_prime = i;
            
        
        System.out.println(count);
    


以上是关于JAVA1007 素数对猜想 (20分) PAT乙级 PAT (Basic Level) Practice (中文)的主要内容,如果未能解决你的问题,请参考以下文章

PAT乙级 1007 素数对猜想 (20 分)

PAT B1007 素数对猜想 (20 分)

PAT乙级1007 素数对猜想 (20 分)

PAT Basic 1007 素数对猜想 (20 分)

PAT-1007素数对猜想

PAT Basic 1007 素数对猜想 (20) [数学问题-素数]