论坛首页 招聘求职论坛

一道简单的Java面试题

浏览 103224 次
精华帖 (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而已
0 请登录后投票
   发表时间:2011-12-08  
zhangyang6380006 写道
LZ您开玩笑呢吧,敢要这么多这个题目都没做出来?我写个试试
for(int i=1;i<100;i++)
{
if(i % 2) == 1)
system.out.println(i+" 是质数");
else
break;
}
也不知道对不对,没测

哥。这个是偶数和奇数
0 请登录后投票
   发表时间: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)+"毫微秒");
    }

不解释!
0 请登录后投票
   发表时间: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);
		}
0 请登录后投票
   发表时间: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);
佩服!!!
0 请登录后投票
   发表时间: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)+"毫微秒");
    }

不解释!

还不解释?让研究素数测试的数学家们情何以堪啊。
0 请登录后投票
   发表时间: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不是质数,但这段程序判断是质数
0 请登录后投票
   发表时间: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?
0 请登录后投票
   发表时间: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次方
0 请登录后投票
   发表时间: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) 需解释!
0 请登录后投票
论坛首页 招聘求职版

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