之前写的一个小函数, 效率不咋地, 大家随便看看吧
- /**
- 打印不大于给定值的所有素数并计数
- */
- public static void printPrime(int max){
- if (max<2) //最小的素数为2
- return;
- //素数定理: max中素数数量小于max/(ln(max)-1.5)
- int length = (int)(max/(Math.log(max)-1.5));
- length = (length > 2)?length:2;
- int[] prime = new int[length]; //存储已获得的素数
- int count = 0;
- System.out.print(2+"\t");
- a: for (int i=3; i<=max; i+=2){ //除2外所有素数都为奇数
- for (int j=0; j<count && prime[j]*prime[j]<=i; j++){
- if (i%prime[j] == 0) //判断是否是素数
- continue a;
- }
- System.out.print(i+"\t");
- prime[count++] = i;
- }
- System.out.println();
- System.out.println("小于"+max+"的质数数量: "+(count+1));
- }
复制代码
不打印只计数的话可以快一些
|
|