质数(prime number)又称素数,有无限个。一个大于1的自然数,除了1和它本身外,能被整除以其他自然数(质数),换句话说就是该数除了1和它本身以外不再有其他的因数;否则称为合数。
如何判断一个数是否是质数:
代码1:
1 /** 2 * 判断给定的数字是否为素数(质数) 3 * @param num 4 * @return 5 */ 6 public static boolean isPrime(int num){ 7 if(num < 2){ 8 return false; 9 } 10 11 for(int i = 2;i < num;i++){ 12 if(num % i == 0){ 13 return false; 14 } 15 } 16 17 return true; 18 }
代码2:
1 /** 2 * 判断给定的数字是否为素数(质数) 3 * @param num 4 * @return 5 */ 6 public static boolean isPrime(int num){ 7 if(num < 2){ 8 return false; 9 } 10 11 for(int i = 2;i*i < num;i++){ 12 if(num % i == 0){ 13 return false; 14 } 15 } 16 17 return true; 18 }
总结:代码2相对于代码1效率更高
判断质数的技巧:
根据质数的定义,在判断一个数n是否是质数时,我们只要用1至n-1去除n,看看能否整除即可。但我们有更好的办法。先找一个数m,使m的平方大于n,再用<=m的质数去除n,如果都不能整除,则n必然是质数。如我们要判断1993是不是质数,50*50>1993,那么我们只要用1993去 除<50的质数就可以了。100以内的质数有25个,还是比较好记的,我们只要记熟100以内质数,就可以快速判断10000以内的数是不是质数了。
希望有更优算法的朋友能给我提出建议和指正。
时间: 2024-10-27 07:33:25