黑马程序员技术交流社区
标题:
求助今年百度的一个笔试题 给你一个自然数N,求[6,N]之内...
[打印本页]
作者:
.....淡定
时间:
2013-9-12 09:50
标题:
求助今年百度的一个笔试题 给你一个自然数N,求[6,N]之内...
给你一个自然数N,求[6,N]之内的所有素数中,两两之和为偶数的那些偶数
怎么办用最高效的方法
作者:
mo﹎雲℡
时间:
2013-9-12 13:58
http://www.cnblogs.com/Zblogs/archive/2013/08/16/3263610.html
有个网址你可以看看。
作者:
HM张博文
时间:
2013-9-12 20:44
两两之和为偶数的那些偶数,这个看不懂哦
作者:
xiaoxu
时间:
2013-9-12 21:28
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);
}
}
复制代码
自己写的,正确性不太清楚,如果有错,麻烦告诉我哈
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2