锁定老帖子 主题:一道简单的Java面试题
精华帖 (0) :: 良好帖 (0) :: 隐藏帖 (3)
|
|
---|---|
作者 | 正文 |
发表时间:2011-12-08
zhangyang6380006 写道 LZ您开玩笑呢吧,敢要这么多这个题目都没做出来?我写个试试
for(int i=1;i<100;i++) { if(i % 2) == 1) system.out.println(i+" 是质数"); else break; } 也不知道对不对,没测 错了,只是除2而已 |
|
返回顶楼 | |
发表时间:2011-12-08
zhangyang6380006 写道 LZ您开玩笑呢吧,敢要这么多这个题目都没做出来?我写个试试
for(int i=1;i<100;i++) { if(i % 2) == 1) system.out.println(i+" 是质数"); else break; } 也不知道对不对,没测 哥。这个是偶数和奇数 |
|
返回顶楼 | |
发表时间:2011-12-08
public void bestTest(int value){
long start=System.nanoTime(); System.out.print("1,2,3,5,7,"); for (int i = 3; i < value; i=i+2) { if(i%3==0||i%5==0||i%7==0){ continue; }else { System.out.print(i+","); } } long stop=System.nanoTime(); System.out.println("本次运行时间为"+(stop-start)+"毫微秒"); } 不解释! |
|
返回顶楼 | |
发表时间:2011-12-08
one: for (int i = 2; i <= 100; i++) { for (int j = 2; j <= (i / 2); j++) { if (i % j == 0) { continue one; } } System.out.println(i); } |
|
返回顶楼 | |
发表时间:2011-12-08
lianglove_0 写道 public void bestTest(int value){
long start=System.nanoTime(); System.out.print("1,2,3,5,7,"); for (int i = 3; i < value; i=i+2) { if(i%3==0||i%5==0||i%7==0){ continue; }else { System.out.print(i+","); } } long stop=System.nanoTime(); System.out.println("本次运行时间为"+(stop-start)+"毫微秒"); } 不解释! 这个哥的代码很强,不过很大是数学的方式去思考,我的是计算机的方式去思考,解析: 1.质数都是不能被2整除的,不能被二整除的数+1就可以被2整除,所以得到一个质数的时候,直接+2,可以判断下一个是否质数 2.非质数一定被以下几个数中的一个整除:2,3,5,7(因为非质数都是由这4个数的任意一个或者几个组成的, 6,8,24,44,54等),上面已经排除2了. 所以这个哥的代码复杂度是O(n); 佩服!!! |
|
返回顶楼 | |
发表时间:2011-12-08
lianglove_0 写道 public void bestTest(int value){
long start=System.nanoTime(); System.out.print("1,2,3,5,7,"); for (int i = 3; i < value; i=i+2) { if(i%3==0||i%5==0||i%7==0){ continue; }else { System.out.print(i+","); } } long stop=System.nanoTime(); System.out.println("本次运行时间为"+(stop-start)+"毫微秒"); } 不解释! 还不解释?让研究素数测试的数学家们情何以堪啊。 |
|
返回顶楼 | |
发表时间:2011-12-08
panggezi 写道 lianglove_0 写道 public void bestTest(int value){
long start=System.nanoTime(); System.out.print("1,2,3,5,7,"); for (int i = 3; i < value; i=i+2) { if(i%3==0||i%5==0||i%7==0){ continue; }else { System.out.print(i+","); } } long stop=System.nanoTime(); System.out.println("本次运行时间为"+(stop-start)+"毫微秒"); } 不解释! 还不解释?让研究素数测试的数学家们情何以堪啊。 这程序有问题吧,121不是质数,但这段程序判断是质数 |
|
返回顶楼 | |
发表时间:2011-12-08
harry_bote 写道 panggezi 写道 lianglove_0 写道 public void bestTest(int value){
long start=System.nanoTime(); System.out.print("1,2,3,5,7,"); for (int i = 3; i < value; i=i+2) { if(i%3==0||i%5==0||i%7==0){ continue; }else { System.out.print(i+","); } } long stop=System.nanoTime(); System.out.println("本次运行时间为"+(stop-start)+"毫微秒"); } 不解释! 还不解释?让研究素数测试的数学家们情何以堪啊。 这程序有问题吧,121不是质数,但这段程序判断是质数 要的是100以内的质数,何来121? |
|
返回顶楼 | |
发表时间:2011-12-08
lianglove_0 写道 harry_bote 写道 panggezi 写道 lianglove_0 写道 public void bestTest(int value){
long start=System.nanoTime(); System.out.print("1,2,3,5,7,"); for (int i = 3; i < value; i=i+2) { if(i%3==0||i%5==0||i%7==0){ continue; }else { System.out.print(i+","); } } long stop=System.nanoTime(); System.out.println("本次运行时间为"+(stop-start)+"毫微秒"); } 不解释! 还不解释?让研究素数测试的数学家们情何以堪啊。 这程序有问题吧,121不是质数,但这段程序判断是质数 要的是100以内的质数,何来121? 看漏了。原来还有质数的n次方 |
|
返回顶楼 | |
发表时间:2011-12-08
最后修改:2011-12-08
414149609 写道 lianglove_0 写道 public void bestTest(int value){
long start=System.nanoTime(); System.out.print("1,2,3,5,7,"); for (int i = 3; i < value; i=i+2) { if(i%3==0||i%5==0||i%7==0){ continue; }else { System.out.print(i+","); } } long stop=System.nanoTime(); System.out.println("本次运行时间为"+(stop-start)+"毫微秒"); } 不解释! 这个哥的代码很强,不过很大是数学的方式去思考,我的是计算机的方式去思考,解析: 1.质数都是不能被2整除的,不能被二整除的数+1就可以被2整除,所以得到一个质数的时候,直接+2,可以判断下一个是否质数 2.非质数一定被以下几个数中的一个整除:2,3,5,7(因为非质数都是由这4个数的任意一个或者几个组成的, 6,8,24,44,54等),上面已经排除2了. 所以这个哥的代码复杂度是O(n); 佩服!!! 抛砖引玉而已,期待更好的实现方法。 这只是针对100以内的写的,不是通用的方法。 O(n) 需解释! |
|
返回顶楼 | |