孪生素数问题

来源:互联网 发布:网络流行aq是什么意思 编辑:程序博客网 时间:2024/06/15 00:36

孪生素数问题

时间限制:3000 ms  |  内存限制:65535 KB
难度:3
描述
写一个程序,找出给出素数范围内的所有孪生素数的组数。一般来说,孪生素数就是指两个素数距离为2,近的不能再近的相邻素数。有些童鞋一看到题就开始写程序,不仔细看题,咱们为了遏制一下读题不认真仔细的童鞋,规定,两个素数相邻为1的也成为孪生素数。
输入
第一行给出N(0<N<100)表示测试数据组数。
接下来组测试数据给出m,表示找出m之前的所有孪生素数。
(0<m<1000000)
输出
每组测试数据输出占一行,该行为m范围内所有孪生素数组数。
样例输入
114
样例输出
4

import java.util.Scanner;public class Main {public static void main(String[] args) {Scanner scanner=new Scanner(System.in);int n=scanner.nextInt();while(n--!=0){int arr[]=new int[1000005];int m=scanner.nextInt();for(int i=1;i<=m;i++){if(i%2==0)//偶数不是素数{arr[i]=0;}else{arr[i]=1;}}for(int i=3;i*i<=m;i+=2)//奇数的倍数也不是素数{for(int j=i+i;j<=m;j+=i){arr[j]=0;}}arr[2]=1;arr[3]=1;int count=0;for(int i=2;i<=m;i++){if(arr[i]==1 && arr[i+1]==1 && i<=m-1){count++;}if(arr[i]==1 && arr[i+2]==1 && i<=m-2){count++;}}System.out.println(count);}}}


1 0
原创粉丝点击