import org.w3c.dom.ls.LSOutput;
import java.util.Scanner;
/**
* 题目:判断101-200之间有多少个素数,并输出所有素数。
* 素数,原来叫做质数,只能被自己和1整除的数
*/
public class Demo1 {
public static void main(String[] args) {
getPrmenumber(101,200);
}
private static void getPrmenumber(int a, int b) {
int sum = 0;
//判断a到b之间的素数个数
for(int i = a;i <= b;i++){
if(isPremeNuber(i)){
sum += 1;
System.out.print(i + " ");
}
}
System.out.println("素数个数为:" + sum);
}
//判断一个数是否为素数
private static boolean isPremeNuber(int i) {
boolean flag = true;
/**
* 至于为什么只判断到i/2,这个有个基本定理的,
* 1.“检验素数只要判断自己一半范围内的约数个数。"
* 很容易理解,如果一半范围内有一个能整除的数字,
* 那么必定有一个数字在1~ i内也是它的约数。不符合素数规定。
* 所以只需要检验到i/2。
* 2.更快的可以只验证到这个数字的平方根, Math.sqrt(i)
* 一句话,其实就是为了更快的验证。
*/
//for(int k = 2;k <= Math.sqrt(i);k++)
for(int k = 2;k <= i / 2;k++){
if(i % k == 0){
flag = false;
break;
}
}
return flag;
}
}
Java练习系列(二)判断101-200之间有多少个素数,并输出所有素数。
最新推荐文章于 2022-09-07 23:56:18 发布