题目描述
让我们定义dn为:dn=pn+1−pn,其中pi是第i个素数。显然有d1=1,且对于n>1有dn是偶数。“素数对猜想”认为“存在无穷多对相邻且差为2的素数”。
现给定任意正整数N(<105),请计算不超过N的满足猜想的素数对的个数
输入
输入在一行给出正整数N。
输出
在一行中输出不超过N的满足猜想的素数对的个数。
输入样例 1
20
输出样例 1
4
输入样例 2
7
输出样例 2
3
输入样例 3
10
输出样例 3
3
解题思路
就先判断N中有多少素数,分别是那些,放入列表中,后再判断满足相差2的有多少个就行了,小于10的就是其素数的个数。
代码
import java.util.ArrayList;
import java.util.Scanner;
public class Main {
static int a=0;
public static void main(String[] args) {
Scanner scanner=new Scanner(System.in);
int m=scanner.nextInt();
ArrayList<Integer> n=new ArrayList<>();
int b=0;
for (int i=3;i<=m;i++){//判断是否为素数
for (int j=2;j<i;j++){
if (i%j==0){
a++;
}
}
if (a==0){
n.add(i);
}
a=0;
}
for (int k=1;k<n.size();k++){//判断满足条件素数的个数
if (n.get(k)-n.get(k-1)==2){
b++;
}
}
if (m<=10){//小于10的就是其素数的个数
b+=1;
}
System.out.println(b);
}
}