判断是否为素数的另一种解法

来源:互联网 发布:linux sslocal 编辑:程序博客网 时间:2024/05/29 06:54
package test;import java.util.Arrays;public class Prime{public static boolean[] primeNumber(int num){if(num < 0){System.out.println("范围必须大于零");return null;}boolean [] prime = new boolean[num + 1];prime[1] = false;Arrays.fill(prime, 2,num + 1,true);int n = (int)Math.sqrt(num);for(int i = 1; i < n;i++){if(prime[i]){for(int j = 2 * i;j <= num;j += i ){prime[j] = false;}}}return prime;}public static void showPrime(int num){boolean []  prime = primeNumber(num);int n = 0;if(prime != null){for(int i = 1; i < prime.length;i++){if(prime[i]){System.out.print(i + "\t");if(++n % 10 == 0){System.out.println();}}}}}public static void main(String[] args){int num = 1000000;long start = System.currentTimeMillis();showPrime(num);long end = System.currentTimeMillis();System.out.println("\n"+(end-start));}}

素数:如果一个正整数的因数除了1和它本身,那么该数为素数!

平常解法:用该数n整除2-sqst(n)之间的数,如果不能整除,该数就为素数!

新解法:首先排除1,因为2是素数,把它留下来,然后把后面2的倍数排除,2后面第一个没排除的数3,然后把后面三的倍数排除,3后面第一个没被排除的数是5,把后面5的倍数排除...一直这样下去,就会不超过N的合数排除,只留下素数!