PAT 素数对猜想 Java版本
来源:互联网 发布:新网站如何做优化 编辑:程序博客网 时间:2024/05/16 18:37
题目描述:
让我们定义 dn 为:dn = pn+1 - pn,其中 pi 是第i个素数。显然有 d1=1 且对于n>1有 dn 是偶数。“素数对猜想”认为“存在无穷多对相邻且差为2的素数”。
现给定任意正整数N (< 105),请计算不超过N的满足猜想的素数对的个数。
输入格式:每个测试输入包含1个测试用例,给出正整数N。
输出格式:每个测试用例的输出占一行,不超过N的满足猜想的素数对的个数。
输入样例:20输出样例:
4
解题思路:
使用素数筛法求素数,效率较高,但会用较多内存。如下:
首先建立一个boolean类型的数组,用来存储你要判断某个范围(比如N)内自然数中的质数,初始化为true。
找到第一个质数,将此质数的倍数全部置为false,一直到根号N,剩下的就全是质数了。
代码如下:
import java.util.*;import java.lang.*;public class Main{ public static void main(String[] args){ Scanner in = new Scanner(System.in); int N = in.nextInt(); boolean[] isPrime = new boolean[N+1]; isPrime[1] = false; Arrays.fill(isPrime,2,N+1,true); int num = (int)Math.sqrt(N); for(int i=2; i<=num; i++){ if(isPrime[i]){ for(int j=i;j*i<N;j++) isPrime[j*i]=false; } } int lastPrime=2; int nowPrime=0; int count=0; for(int k=3;k<=N;k++){ if(isPrime[k]){ nowPrime = k; if(nowPrime-lastPrime==2) count++; lastPrime = nowPrime; } } System.out.println(count); }}
0 0
- PAT 素数对猜想 Java版本
- PAT素数对猜想
- Java - PAT - 1007. 素数对猜想 (20)
- PAT乙级:1007. 素数对猜想 (Java)
- PAT 1007. 素数对猜想 (20) JAVA
- PAT 1007.素数对猜想
- PAT 1007. 素数对猜想
- PAT 1007. 素数对猜想
- pat 1007. 素数对猜想
- PAT 素数对猜想 (Python)
- PAT 1007 素数对猜想
- PAT 1007. 素数对猜想
- PAT 1007 素数对猜想
- PAT乙级-素数对猜想
- PAT 1007. 素数对猜想
- PAT 1007. 素数对猜想
- PAT练习题:素数对猜想
- PAT B1007. 素数对猜想
- 解决用userdel删除不掉用户的问题
- 用Android自带的signapk.jar + .x509.pem + .pk8签名应用程序
- Overview of Redis Cluster main components
- 【Useful VI】Easy VI Aborter 中止VI运行
- 使用Git上传项目代码到github
- PAT 素数对猜想 Java版本
- Android应用本地拒绝服务漏洞浅析
- DDL、DML和DCL的区别与理解
- POJ 3187 Backward Digit Sums
- hibernate.hbm2ddl.auto设置为update时数据库没有自动生成表结构
- Java wait() notify()方法使用实例讲解
- LeetCode—Palindrome Number 数字是否是回文数字
- android自定义actionBar布局
- 系统调用和驱动程序中相应函数的参数对应关系