PTA-乙级1007 素数对猜想 (20 分)-JAVA

发布时间:2022-07-02 发布网站:脚本宝典
脚本宝典收集整理的这篇文章主要介绍了PTA-乙级1007 素数对猜想 (20 分)-JAVA脚本宝典觉得挺不错的,现在分享给大家,也给大家做个参考。

PTA-乙级1007 素数对猜想 (20 分)-JAVA

题意:
前面的式子我看的不是很明白,但是从“素数对猜想”,认为这里就可以看明白这道题让我们做什么了,存在无穷多对相邻且整数差为2的素数,这是解题的关键,大致来说就是让我们输入一个这个数N,让我们判断N中所有相邻素数中相差2的素数对个数,从输入案例也可以验证一下(3和5、5和7、7和9、11和13)。
 
思路:
首先我们要先把给我们的N中的素数求出来,接下来在求素数对,求素数的算法我们可以用两层for循环来解决,但是在pta中提交时最后一个案例超时了,鉴于我的水平,暂时还没有学会新的求素数算法,只能拿18分了,对于求素数对,我们可以用rear和fron分别t暂存判断出来的后面的素数和前面的素数,然后对是否构成素数对判断,判断后还要记得更新front,让我们来看一下代码吧。
import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        //输入正整数,注意正整数的范围
        int num = sc.nextInt();
        int count = 0;
        int rear = 0, front = 0;
        //循环从2到num之间的数,判断素数
        for (int x = 3; x <= num; x++) {	//从3开始是2和3不是素数对,不用判断2了
            boolean flag = true;	//注意开关flag的位置
            for (int i = 2; i < x; i++) {
                if (x % i == 0) {
                    flag = false;
                    break;	//x对j只要求余数为0就一定不是素数,改变控制判断素数对的开关后就跳出内循环
                }
            }
            if (flag) {
                rear = x;	//先把判断出来的第一个素数给rear,等第二次后才能真正的去判断
                if (rear - front == 2) {
                    count++;	//判断成功计数器加一
                }
                front = rear;	//更新front
            }
        }
        System.out.println(count);
    }
}

 

脚本宝典总结

以上是脚本宝典为你收集整理的PTA-乙级1007 素数对猜想 (20 分)-JAVA全部内容,希望文章能够帮你解决PTA-乙级1007 素数对猜想 (20 分)-JAVA所遇到的问题。

如果觉得脚本宝典网站内容还不错,欢迎将脚本宝典推荐好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。
标签: