论坛首页 招聘求职论坛

一道简单的Java面试题

浏览 103221 次
精华帖 (0) :: 良好帖 (0) :: 隐藏帖 (3)
作者 正文
   发表时间:2011-09-26  
List<Integer> list = new ArrayList<Integer>();
list.add(2);
int max = 100;
for(int i=3;i<=max;i+=2){
  boolean isPrime = true;
  for(int p : primes){
    if(i%p == 0){
      isPrime = false;break;
    }
  }
  if(isPrime){
    list.add(i);
  }
}
0 请登录后投票
   发表时间:2011-09-27  
rickysun 写道
求100以内的质数(指在一个大于1的自然数中,除了1和此整数自身外,没法被其他自然数整除的数。)
大家觉得这是个很难的题目吗?
最近面试了很多人,职位是:Java开发工程师。
有人说“这个是算法题,我是搞J2EE开发的,不需要会这个题目”,此人薪资要求8K
有人说“可能专业不对口,我是搞SSH的,我Struts/Spring/Hibernate都懂。这个做不出来”,此人薪资要求8.5K。
最终有一个哥们,做了15分钟,终于给出答案了。当然是答案是错的,此人薪资要求12K。
他给的答案是:
for(int i=0;i<100;i++) {
   for(int j<0;j<100;j++) {
       if(i/j==0) {
          break;
       }
       System.out.println(i);
   }
}

:cry:   
我真的很无奈了。。。。。
我现在的想法是,30秒内给出答案的,直接8K以上。。。

你招我吧 这个题目我大一就会
0 请登录后投票
   发表时间:2011-09-28  
凑个热闹哈 看看对不

public class test
{
    public static int n=5000000; //所求的范围
    public static int arr[]={2,3,5}; 
    public static boolean isPrime(int nubmber)
    {
        if(nubmber<6)
        {
            if(nubmber==2||nubmber==5)
            {
                return true;
            }
        }
        for (int i = 0; i < test.arr.length; i++)
        {
            //如果能整除2,3,5则不是质数
            if(0==nubmber%test.arr[i])    
            {
                return false;
            }
        }
        return true;
    }
    public static void printALLPrime(int n)
    {
        for (int i = 0; i <= n; i++)
        {
            if(isPrime(i))
            {
                System.out.println(i);
            }
        }
    }
    public static void main(String[] args)
    {
        test.printALLPrime(test.n);
    }

}
0 请登录后投票
   发表时间:2011-09-28  
public static void getPrimeNumber(int rang) {

for (int dividend = 1; dividend < rang; dividend++) {

int count = 0;

for (int divisor = 2; divisor < dividend; divisor++) {
if(dividend % divisor == 0){
count = 0;
break;
}
count ++;
}
if(count != 0){
System.out.println(dividend);
}
}

}
0 请登录后投票
   发表时间:2011-09-28  
for(float i=3;i<101;i++){
  int q = 2;
for(float j=2;j<i;j++){
if((i/j)==Math.floor((i/j))){
}
else{(q)++;}
}
if(q==i){System.out.println(i);}
}
0 请登录后投票
   发表时间:2011-09-28  
这个做不出来的,的确应该不能要,有些公司直接考快速排序,我感觉快速排序应该是比较上档次点的了
0 请登录后投票
   发表时间:2011-09-28   最后修改:2011-09-29
呵呵。实现简单。
两个for循环嵌套。
List list = new ArrayList();
for (int i=1;i<101;i++){
list.add(i);
}
for (int i=2;i<101;i++){
for (int j=2;j<101;j++){
if (i*j>100)break;
list.remove(i*j);
}
}



10秒的解决方案,可惜现在才北京7k。
0 请登录后投票
   发表时间:2011-09-28  
为什么看着别人做的都那么费劲- -
是我错了还是大家都是死脑筋?
为什么一定从除的角度出发?。。。。。

难道不能乘着算吗?
0 请登录后投票
   发表时间:2011-09-29  
这就八千啦?!!  很多书上都有这例题。
0 请登录后投票
   发表时间:2011-09-30  
会这道题不代表什么,不会这道题一定代表着什么。
0 请登录后投票
论坛首页 招聘求职版

跳转论坛:
Global site tag (gtag.js) - Google Analytics