锁定老帖子 主题:一道简单的Java面试题
精华帖 (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); } } } } |
|
返回顶楼 | |
发表时间:2011-06-27
这道题也做不出,可以退休(退出IT界)了
|
|
返回顶楼 | |
发表时间:2011-06-27
zhangyang6380006 写道 LZ您开玩笑呢吧,敢要这么多这个题目都没做出来?我写个试试
for(int i=1;i<100;i++) { if(i % 2) == 1) system.out.println(i+" 是质数"); else break; } 也不知道对不对,没测 这程序只能运行到2就没有了。 |
|
返回顶楼 | |
发表时间: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); } |
|
返回顶楼 | |
发表时间: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); } } } |
|
返回顶楼 | |
发表时间: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 |
|
返回顶楼 | |
发表时间: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); } } } |
|
返回顶楼 | |
发表时间: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^层数 |
|
返回顶楼 | |
发表时间: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); } } } 兼顾性能与安全性 |
|
返回顶楼 | |
发表时间:2011-06-29
public static void main(String[] args) {
for (int i=2;i<100;i++){ if(i%2==1){ System.out.println("这个是奇数"+i); } } 这么写 有问题不? |
|
返回顶楼 | |