锁定老帖子 主题:一道简单的Java面试题
精华帖 (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); } } |
|
返回顶楼 | |
发表时间: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以上。。。 你招我吧 这个题目我大一就会 |
|
返回顶楼 | |
发表时间: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); } } |
|
返回顶楼 | |
发表时间: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); } } } |
|
返回顶楼 | |
发表时间: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);} } |
|
返回顶楼 | |
发表时间:2011-09-28
这个做不出来的,的确应该不能要,有些公司直接考快速排序,我感觉快速排序应该是比较上档次点的了
|
|
返回顶楼 | |
发表时间: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。 |
|
返回顶楼 | |
发表时间:2011-09-28
为什么看着别人做的都那么费劲- -
是我错了还是大家都是死脑筋? 为什么一定从除的角度出发?。。。。。 难道不能乘着算吗? |
|
返回顶楼 | |
发表时间:2011-09-29
这就八千啦?!! 很多书上都有这例题。
|
|
返回顶楼 | |
发表时间:2011-09-30
会这道题不代表什么,不会这道题一定代表着什么。
|
|
返回顶楼 | |