【如何列出质数】
输出在指定范围内的所有质数。
【编程思路】
1不是质数,也不是合数,把1排除。2是质数,保留,把2后面所有能被2整除的数都划去。2后面第一个没划去的数是3,把3留下,再把3后面所有能被3整除的数都划去,一直循环做下去,就会把不超过N的全部合数划去,留下的就是不超过N的全部质数。
【源代码】
1 package javaexamples; 2 import java.util.Arrays; 3 4 public class SuShu 5 { 6 private static boolean[] primeNumber(int num){ //求质数 7 if(num<0){ //检查指定的范围:质数必须大于零 8 System.out.println("范围必须大于0"); 9 return null;10 }11 boolean[] primes=new boolean[num+1];//声明布尔类型数组,长度为范围+112 primes[1]=false;//将特殊数字1抛出,因为1不是质数13 Arrays.fill(primes,2,num+1,true);//将布尔数组元素的值都赋为true,2是索引值,从2开始,到num+1终止14 int n=(int)Math.sqrt(num);//Math.sqrt()方法用于求开方15 for(int i=1;i
【运行结果】
范围在100内的质数有: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 一共有25个【关键技术解析】
1、定义两个方法,一个是求质数的,一个是显示质数的。
2、求质数时需要检查质数范围是否正确。
3、为了方便,将质数所在的布尔类型数组的index值与数字值相匹配,所以长度设置为范围+1。
4、Math.sqrt()方法用于求开方。
5、Array.fill(boolean[] a, int fromIndex, int toIndex, boolean val)
方法,是将指定的 boolean 值分配给指定 boolean 型数组指定范围中的每个元素。
6、在输出时,判断数组元素是否为true值,下标值即为质数,输出时较方便。
【心得】
感谢aniuer给了我java的中文API,今天学会了查阅,的确方便很多。
只是代码中primeNumber()方法中for循环的内容不太明白,还要仔细研究一下……