1.java判断一个数为素数
今天面试美国的一家公司出了一个简单的面试题就是如何判断它是素数
首先我们回忆一下 什么是素数:
质数的定义:
质数(prime number)又称为素数,有无限多个。质数定义在大于1的自然数中,除了1和它本身以外不会再有其它因数的数称为质数。
(1)从2开始,2是最小的质数。
(2)除了2之外的偶数全都不是质数,因为除了1和自身之外它们还能被2整除。若为大于2的奇数,则进入下一步继续判断。
(3)将其开方,若从3到开方向下取整之间的所有奇数都不能将其整除,则说明该数为质数。
至于为什么只用除到其平方根?
因为如果一个数不是素数是合数,那么一定可以由两个自然数相乘得到,其中一个大于或等于它的平方根,一个小于或等于它的平方根。
并且成对出现。
2.java 实现判断一个数为素数
public class primeCount {
public static void main(String[] args) {
// System.out.println(11%2);
System.out.println("-----"+primeCount(-10, 6));
}
public static int primeCount(int start,int end){
int number = 0;
for (int i = start; i <=end ; i++) {
if (isPrimeNumber(i)){
number++;
System.out.println(i);
}
}
return number;
}
//判断一个数是否为素数
public static boolean isPrimeNumber(int num){
if(num == 2){
return true;// 对2单独处理
}
if(num < 2 || num % 2 == 0){
return false; // 识别小于2的数和偶数
}
for (int i =3; i<=Math.sqrt(num);i+=2){
if(num % i == 0){ // 识别被奇数整除
return false;
}
}
return true;
}
}