PTA-乙级1007 素数对猜想 (20 分)-JAVA
2021/10/22 20:39:59
本文主要是介绍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的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-11-01Java部署教程:新手入门指南
- 2024-11-01Java部署教程:从入门到实践
- 2024-11-01Java订单系统教程:新手入门指南
- 2024-11-01Java分布式教程:新手入门指南
- 2024-11-01Java管理系统教程:新手入门详解
- 2024-11-01Java监控系统教程:从入门到实践
- 2024-11-01SpringCloud Alibaba入门:轻松搭建微服务架构
- 2024-11-01Swagger入门:新手必读指南
- 2024-11-01Swagger入门:轻松搭建API文档
- 2024-11-01uni-APP入门:新手快速上手指南