- import java.util.*;
- class SuDemo
- {
- public static void main(String[] args)
- {
- int n=1000;
- boolean[] arr=new boolean[n+1];
- setNum(arr);
- //printNum(arr);
- getNum(arr);
- }
- //用筛选法得出n以内的所有素数
- public static void setNum(boolean[] arr)
- {
- int n=arr.length-1;
- arr[0]=arr[1]=false;
- arr[2]=true;
- for (int x=3;x<=n;x+=2)
- arr[x]=true;
- for(int i=3,len=(int)Math.sqrt(n);i<=len;i+=2)
- {
- if(arr[i])
- {
- for(int j=i+i;j<=n;j+=i)
- arr[j]=false;
- }
- }
- }
- //打印n以内的所有素数
- public static void printNum(boolean[] arr)
- {
- int n=arr.length-1;
- int i=3;
- System.out.print(2+",");
- while(i<=n)
- {
- if(arr[i])
- System.out.print(i+",");
- i+=2;
- }
- }
- //打印[6,N]之内的所有素数中,两两之和为偶数的那些偶数
- public static void getNum(boolean[] arr)
- {
- //用了TreeSet结构来去掉重复和排序
- Set<Integer> s=new TreeSet<Integer>();
- int n=arr.length-1;
- for (int i=7;i<=n ;i+=2 )
- {
- if(!arr[i])
- continue;
- for (int j=i;j<=n ;j+=2 )
- {
- if(!arr[j])
- continue;
- s.add(i+j);
- }
- }
- System.out.println(s);
- }
- }
复制代码 自己写的,正确性不太清楚,如果有错,麻烦告诉我哈
|