//判断101-200之间有多少个素数,并输出所有素数。
补充:素数又叫质数,质数是指在大于1的自然数中,除了1和它本身以外,不能被其他自然数整除的数。比1大但不是素数的数称为合数,1和0既非素数也非合数。
解题思路:首先我们要怎样判断范围内的数是素数呢?
我们只需要用一个数去除2到这个数的值减1
例如:我们要判断101是不是素数,我们就要用101去除2到100。如果能被整除,则表明这个数不是素数,反之就是素数。
注:考虑到到代码优化及效率问题,如下代码段中的内层循环里(j<=Math.sqrt(i))
优化过程为:j<i
j<=i/2
j<=Math.sqrt(i)
package binary;
public class ExtendedExercises {
public static void main(String[] args) {
//判断101-200之间有多少个素数,并输出所有素数。
int count = 0;
for(int i=101;i<200;i++){//遍历101~200
boolean flag = true;//声明flag用以判断i是素数
for(int j=2;j<=Math.sqrt(i);j++){
if(i%j == 0){
flag = false;
break;
}
}
if(flag){//范围内是素数就进入该判断
count++;//记录是素数的次数
System.out.println("素数有:"+i);//打印输出范围内的素数
}
}
System.out.println("总共有"+count+"个");
}
}
由于篇幅过长,只展示部分结果:
素数有:181
素数有:191
素数有:193
素数有:197
素数有:199
总共有21个