判断一个数是否为素数,以及求101到200的素数
package arithmetic;
/**
* 素数的相关算法
*
* 1.判断一个数是否为素数?
* 2.判断101-200之间有多少个素数,并输出所有素数。
*
* @author sunRainAmazing
*
*/
public class TruePrime {
public static void main(String[] args) {
int number1=12;
int number2=7;
System.out.println(isPrimeByAll(number2));
System.out.println(isPrimeByHalf(number1));
getPrime();
}
/**
* 判断是否为素数
* @param number
* @return 返回true 是素数,返回false不是素数
*/
public static boolean isPrimeByAll(int number){
for (int i =2; i < number; i++) {
if(number%i ==0){
return false;
}
}
return true;
}
/**
* 判断是否为素数 只需要判断到一半即可
* @param number
* @return 返回true 是素数,返回false不是素数
*/
public static boolean isPrimeByHalf(int number){
for (int i =2; i <number/2+1; i++) {
if(number%i ==0){
return false;
}
}
return true;
}
/**
* 判断是否为素数 只需要能否被奇数整除即可 大于2的偶数必定不是素数
* @param number
* @return 返回true 是素数,返回false不是素数
*/
public static boolean isPrimeByEven(int number){
for (int i =3; i <number; i+=2) {
if(number%i ==0){
return false;
}
}
return true;
}
/**
* 判断是否为素数 只需要判断到平方数即可
* 一个数 n 如果是合数,那么它的所有的因子不超过sqrt(n)--n的开方
* @param number
* @return 返回true 是素数,返回false不是素数
*/
public static boolean isPrimeBySquare(int number){
for (int i =2; i <=Math.sqrt(number); i++) {
if(number%i ==0){
return false;
}
}
return true;
}
/**
* 求100到200的素数
*/
public static void getPrime(){
int count = 0;
for (int i = 100; i < 201; i++) {
if(isPrimeBySquare(i)){
count++;
System.out.println(i);
}
}
System.out.println("共有素数:"+count);
}
}