找小于N 的所有质数

笔试题目当中,找素数出现的几率有点大。昨天就做了一个,感觉不是很难,美国空间,但可以考查程序员的数学和编码功底。

用嵌套循环来实现是很理想的,怎样减少循环的次数?怎样求出小于N的所有质数?

不可能将一个数除与所有小于它的数字,只要检查到N的平方根就好了。但直接开根号还有个精度的问题。这个可能会产生误差。

索性将判断条件写成 i*i<=N ,免备案空间,道理也是很简单的 i 大于N 的平方根,在检查 第一个 i 除数 N 之前可以先检查 小于第二个 i 是否可以 整除 N。

下面自己敲的求素数:

import java.util.ArrayList;public class Prime {[] findPrime(final int max) {int[] prime = new int[max + 1];ArrayList list = new ArrayList();(int j = 2; j * j <= max; j++) {for (int k = 2*j; k <= max; k++) {if (k % j == 0) {//不是质数 数组对应赋值为1prime[k] = 1;}}}for (int i = 2; i < max; i++) {(prime[i] == 0) {list.add(new Integer(i));}}[] p = new int[list.size()];for (int i = 0; i < list.size(); i++) {p[i] = (Integer) list.get(i);}return p;} main(String[] args) {int[] prime = Prime.findPrime(1000);for (int i = 0; i < prime.length; i++) {System.out.print(prime[i] + ” “);}}},香港空间享受每一刻的感觉,欣赏每一处的风景,这就是人生。

找小于N 的所有质数

相关文章:

你感兴趣的文章:

标签云: