让我们定义 dn 为:dn = pn+1 - pn,其中 pi 是第i个素数。显然有 d1=1 且对于n>1有 dn 是偶数。“素数对猜想”认为“存在无穷多对相邻且差为2的素数”。
现给定任意正整数N (< 105),请计算不超过N的满足猜想的素数对的个数。
输入格式:每个测试输入包含1个测试用例,给出正整数N。
输出格式:每个测试用例的输出占一行,不超过N的满足猜想的素数对的个数。
输入样例:20输出样例:
4
import java.util.LinkedList; import java.util.List; import java.util.Scanner; public class Main { private static List<Integer> primeNumberList = new LinkedList<Integer>(); public static void main(String[] args) { Scanner scanner = new Scanner(System.in); int num = Integer.parseInt(scanner.nextLine()); int d2Count = 0; for(int i=2; i<=num; i++){ if(isPrimeNumber(i)){ int idx = primeNumberList.indexOf(i); if(idx > 0){ if(primeNumberList.get(idx) - primeNumberList.get(idx - 1) == 2){ d2Count++; } } } } System.out.println(d2Count); } private static boolean isPrimeNumber(int num) { if(num < 2){ return false; } if(num == 2){ primeNumberList.add(num); return true; } for(int i=0; i<primeNumberList.size(); i++){ if(num % primeNumberList.get(i) == 0){ return false; } } for(int i=primeNumberList.get(primeNumberList.size() - 1); i<num; i++){ if(num % i == 0){ return false; } } primeNumberList.add(num); return true; } }
评测结果
时间 | 结果 | 得分 | 题目 | 语言 | 用时(ms) | 内存(kB) | 用户 |
---|---|---|---|---|---|---|---|
4月30日 08:58 | 部分正确 | 18 | 1007 | Java (javac 1.6.0) | 80 | 10424 | zspring |
测试点
测试点 | 结果 | 用时(ms) | 内存(kB) | 得分/满分 |
---|---|---|---|---|
0 | 答案正确 | 79 | 10360 | 10/10 |
1 | 答案正确 | 79 | 10424 | 2/2 |
2 | 答案正确 | 79 | 10332 | 2/2 |
3 | 答案正确 | 79 | 10364 | 2/2 |
4 | 答案正确 | 80 | 10308 | 2/2 |
5 | 运行超时 | 0/2 |