论坛首页 招聘求职论坛

一道简单的Java面试题

浏览 103239 次
精华帖 (0) :: 良好帖 (0) :: 隐藏帖 (3)
作者 正文
   发表时间:2011-06-29  
shanga 写道
fernyabc 写道
我测试了,我这个可以,复杂度有,数据结构典型算法

class Prime
{
        public static void main(String[] args){
                boolean[] a = new boolean[100];
                for (int i = 2; i < 100; i++) a[i] = true;
                for (int i = 2; i< 100; i++)
                {
                        if(a[i] != false)
                                for(int j = i; j*i<100; j++)
                                        a[i*j] = false;
                }
                for (int i = 2; i< 100; i++)
                {
                        if (i < 100 && a[i])
                                System.out.println(i);
                }
}
}


你这个时间复杂度是NlgN?我日,有多少层for,时间大概就是n^层数


你可以数数括号,这三个for循环是并列的好不好。。。。。。。。。。。。。。。
0 请登录后投票
   发表时间:2011-06-29  
jhcfe 写道
zhangyang6380006 写道
LZ您开玩笑呢吧,敢要这么多这个题目都没做出来?我写个试试
for(int i=1;i<100;i++)
{
if(i % 2) == 1)
system.out.println(i+" 是质数");
else
break;
}
也不知道对不对,没测

2算质数吧,9难道也是质数。。。

for(int i = 2 ; i <= 100; i++){
			int temp = 0;
			for( int j = 1;j <= i; j++){
				if(i % j == 0){
					temp++;
				}
			}
			if(temp == 2){
				System.out.println(i);
			}
		}
0 请登录后投票
   发表时间:2011-06-29  
suiheart 写道
public static void main(String[] args) {

for (int i=2;i<100;i++){
if(i%2==1){

System.out.println("这个是奇数"+i);

}
}

这么写 有问题不?

肯定有问题啦
0 请登录后投票
   发表时间:2011-06-29  
fernyabc 写道
shanga 写道
fernyabc 写道
我测试了,我这个可以,复杂度有,数据结构典型算法

class Prime
{
        public static void main(String[] args){
                boolean[] a = new boolean[100];
                for (int i = 2; i < 100; i++) a[i] = true;
                for (int i = 2; i< 100; i++)
                {
                        if(a[i] != false)
                                for(int j = i; j*i<100; j++)
                                        a[i*j] = false;
                }
                for (int i = 2; i< 100; i++)
                {
                        if (i < 100 && a[i])
                                System.out.println(i);
                }
}
}


你这个时间复杂度是NlgN?我日,有多少层for,时间大概就是n^层数


你可以数数括号,这三个for循环是并列的好不好。。。。。。。。。。。。。。。

大哥看准点,我说的是层
0 请登录后投票
   发表时间:2011-06-30  
private boolean isPrime(int i){
boolean flag = true;
for(int j = 2;j <= Math.sqrt(i);j++){
if(i % j == 0){
flag = false;
}
}
return flag;
}

如果使用打点的话,效率会高一些。
0 请登录后投票
   发表时间:2011-07-11  
for (int i = 2; i < 100; i++) {
boolean b = true;
for(int j=2;j<10;j++){
if(i!=j && i%j==0){
b=false;
}
}
if(b){
   System.out.println(i);
}
}
0 请登录后投票
   发表时间:2011-07-11  
最快的就是空间换时间,直接打印100以内的质数。其实这道题不同的答法还是能看出一些逻辑上的能力的。
0 请登录后投票
   发表时间:2011-07-11  
for(int i=2;i<=100;i++)
{
boolean isPrime=true;
for(int j=1;j<i;j++)
{
if(i!=j&&j!=1)
{
if(i%j==0)
{
isPrime=false;
}
}
}
if(isPrime)
{
System.out.println(i);
}
}
0 请登录后投票
   发表时间:2011-07-14  
for(int i=2;i<=100;i++){
boolean flag=false;
for(int j=2;j<i;j++){
if(i%j==0){
flag=true;
break;
}
}
if(!flag){
System.out.println(i);
}
}
}
0 请登录后投票
   发表时间:2011-08-17   最后修改:2011-08-17
public class TestDemo {
	@Test
	public void primeNumber(){
		int [] buf = new int[50];//用来存放1-100以内所有的质数,为什么数组长度为50,因为除了2其他偶数都不是质数。所以没有必要声明一个长度为100的数组
		int count = 0;//计数器用来统计当前被验证数可被几个数整除
		int index = 0;//数组下标
		for(int i = 1 ;i<=100;i++){
			for(int j = 1;j<=i;j++){
				if(i%j==0){
					if(++count>2){//如果count>2说明当前被验证的数i不是质数,直接跳出当前循环继续下一个数的判断。
						break;
					}
				}
			}
			if(2==count){//count==2可能会写成count=2,当前写法写错了编译器会报错
				buf[index]=i;//把质数存放到数组里
				index++;//数组下标+1
			}else{
				count = 0;//计数器清零
			}
		}
		
		//循环打印出所有的质数
		for(int i = 0;i<index;i++){
			System.out.print(buf[i]+" ");
		}
	}
}


0 请登录后投票
论坛首页 招聘求职版

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