输入格式:
输入在一行给出正整数N。
输出格式:
在一行中输出不超过N的满足猜想的素数对的个数。
输入样例:
20
输出样例:
4
思路:先求出从1到N中所有的素数,将其存放在s_num数组中,再遍历数组,求出前后两个素数相减差为2个数的个数。
有错误:一处,不知道错在哪里,有看到的大佬希望可以评论说明一下,谢谢啦。
代码:
import java.util.*;
public class Main{
public static void main(String[] args){
Scanner sc = new Scanner(System.in);
int N = sc.nextInt();
int[] s_num = new int[N];
boolean sign ;
int s = 0;
for(int i=2;i<N;i++){
if(i%2==0&&i!=2) continue;
sign = true;
for(int j=2;j<=Math.sqrt(i);j++){
if(i%j==0){
sign = false;
break;
}
}
if(sign){
s_num[s] = i;
s++;
}
} //把素数放进s_num
int sum = 0;
for(int i=0;i<s_num.length-1;i++){
if(s_num[i+1]-s_num[i]==2){
sum++;
}
}
System.out.print(sum);
}
}
附运行截图:
—————————————分割线————————————————
5.13订正