论坛首页 招聘求职论坛

一道简单的Java面试题

浏览 103240 次
精华帖 (0) :: 良好帖 (0) :: 隐藏帖 (3)
作者 正文
   发表时间:2011-06-27  
public class Test {
public static void main(String[] args) {
for (int i = 2; i <= 100; i++) {
boolean flag = true;
for (int j = 2; j <= i; j++) {
if ((i % j == 0) && (i != j)) {
flag = false;
break;
}
}
if (flag) {
System.out.println("质数:" + i);
}
}
}
}
0 请登录后投票
   发表时间:2011-06-27  
这道题也做不出,可以退休(退出IT界)了
0 请登录后投票
   发表时间:2011-06-27  
zhangyang6380006 写道
LZ您开玩笑呢吧,敢要这么多这个题目都没做出来?我写个试试
for(int i=1;i<100;i++)
{
if(i % 2) == 1)
system.out.println(i+" 是质数");
else
break;
}
也不知道对不对,没测


这程序只能运行到2就没有了。
0 请登录后投票
   发表时间:2011-06-28   最后修改:2011-06-28
实在看不下去了,第一素数没有公式之说,100以内的素数,没有全看回复的代码,大部分写的真是不着边际.
素书公式判定
http://zh.wikipedia.org/wiki/%E7%B4%A0%E6%95%B0%E5%85%AC%E5%BC%8F
来看看你们怎么写

我无法在15秒内算出100以内的素数。

顺带给出我的代码

		for (int i = 2; i < 101; i++) {
			boolean sta = true;
			for (int j = 2; j < i; j++) {
				if (i % j == 0) {
					sta = false;
					break;
				}
			}
			if (sta)
				System.out.println("素数"+i);
		}

0 请登录后投票
   发表时间:2011-06-28  
家里没IDE,用notepad随手写的一个,要不LZ把我招了吧,我才大三呢,随您塑造啊
我的想法是:
判断一个数是否是素数
就用这个数除以比它小的所有素数,如果没余数,这个数就也是素数,并且加入到list中
还有就是,素数循环到这个数的一半就可以break了
import java.util.*;
public class Test{
	private static List<Integer> list;
	private static boolean flag;
	public static void main(String[] args){
		list = new ArrayList<Integer>();
		list.add(2);
		for(int i = 3 ; i < 100 ; i++){
			flag = true;
			for(int j:list){
				if(j>(i/2)){
			             break;
				}
				if(i%j==0){
				   flag = false;
			           break;
				}
			}
			if(flag==true) list.add(i);
		}
		for(int l:list){
		    System.out.println(l);
		}
	}
}
0 请登录后投票
   发表时间:2011-06-28  
zhangyang6380006 写道
LZ您开玩笑呢吧,敢要这么多这个题目都没做出来?我写个试试
for(int i=1;i<100;i++)
{
if(i % 2) == 1)
system.out.println(i+" 是质数");
else
break;
}
也不知道对不对,没测

哈哈哈---,错了
哥来个python的

def primeNum(num):
    primes = []
    for i in range(num+1)[2:]:
        for j in range(i**(1/2)):
            if i%j ==0:
                primes.append(i)
                break
    return primes


       
            
0 请登录后投票
   发表时间:2011-06-29   最后修改:2011-06-29
我测试了,我这个可以,复杂度有NlgN,数据结构典型算法

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);
                }
}
}

0 请登录后投票
   发表时间:2011-06-29  
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^层数
0 请登录后投票
   发表时间:2011-06-29  
public class Prime100{
	private static final int[] primes = 
	{2,3,5,7,11,13,17,19,23,29,31,37,41,43,47,53,59,61,67,71,73,79,83,89,97};
	
	public static int[] getPrimes(){
		int[] i = new int[primes.length];
		System.arraycopy(primes, 0, i, 0, primes.length);
		return i;
	}
	public static void main(String [] a){
		for(int i: getPrimes()){
			System.out.println(i);
		}
	}
}


兼顾性能与安全性
0 请登录后投票
   发表时间:2011-06-29  
public static void main(String[] args) {

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

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

}
}

这么写 有问题不?
0 请登录后投票
论坛首页 招聘求职版

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