问题如下:
判断101-200之间有多少个素数,并输出所有素数。
素数/质数的定义:只能被1或本身整除的数
所以一个数除以除了1与本身的数之外的数 能除尽,则不是质数,思考了一下质数有这些:3 ,5 ,7,11,131 ......
思路:
在求区间素数个数时,对某一个未知类型的数,可以把它对2到它本身(1不用看了吧)的每一个数取模,模的尽则不为素数;
稍加思索,假设有c = a*b ,当a <= Math.sqrt(c)时,有b >= Math.sqrt(c), 故模到这个数的平方根即可
代码如下:
static boolean isPrime(int n){
for(int j = 2; j <= Math.sqrt(n); j++){
if(n % j == 0){
//不是素数
return false;
}
}
return true;
}
static void primeNum(int a,int b){
int result = 0;
StringBuilder sb = new StringBuilder();
for(int i = a; i <= b; i++){
if(isPrime(i)){
result++;
sb.append(i).append(" ");
}
}
System.out.println(a + "到" + b + "之间素数有:"+ sb.toString() + "\n共" + result + "个;" );
}
结果: