质数(或素数)是指只有1和它本身两个正因数的自然数。如3,他只能被1和3整除,所以他就是一个质数。4可以被2整除,所以他不是质数。
要找出101-200之间的所有质数,最基本的方法是尝试将它除以比它小的所有自然数,如果能被除尽,则不是质数;否则,它就是一个质数。不过,实际上只需要检查到其平方根即可,因为如果n不是质数,则它必定有一个因子小于或等于sqrt(n)。
假设n = 36,其平方根是6。36的因子包括:1, 2, 3, 4, 6, 9, 12, 18, 36。
- 因子对可以列为:(1, 36), (2, 18), (3, 12), (4, 9), (6, 6)。
- 注意到所有的因子对都至少有一个因子小于或等于6(36的平方根)。
- 对于任何大于6的数,如9,它的因子对是(4, 9),其中4小于6。
public class PrimeNumbers {
public static void main(String[] args) {
int count = 0; // 用于统计质数的数量
for (int i = 101; i <= 200; i++) {
if (isPrime(i)) {
System.out.println(i); // 输出质数
count++;
}
}
System.out.println("Total prime numbers between 101 and 200: " + count);
}
public static boolean isPrime(int n) {
// 0和1不是质数,小于0的数也不是质数
if (n <= 1) {
return false;
}
// 检查从2到n的平方根是否有因子
for (int i = 2; i <= Math.sqrt(n); i++) {
// 如果n能被i整除,说明n不是质数
if (n % i == 0) {
return false;
}
}
// 如果没有找到任何因子,说明n是质数
return true;
}
}
这段代码定义了一个isPrime方法,用于判断一个整数n是否为质数。在主方法main中,我们遍历了101到200之间的所有数,对每个数调用isPrime方法进行检查。如果是质数,则输出这个数,并将质数的数量加1。最后,输出101-200之间质数的总数。