版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/tfstone/article/details/89971940
问题如下:
判断101-200之间有多少个素数,并输出所有素数。
素数/质数的定义:只能被1或本身整除的数
所以一个数除以除了1与本身的数之外的数 能除尽,则不是质数,思考了一下质数有这些:3 ,5 ,7,11,131 ......
思路:
在求区间素数个数时,对某一个未知类型的数,可以把它对2到它本身(1不用看了吧)的每一个数取模,模的尽则不为素数;
稍加思索,假设有c = a*b ,当a <= Math.sqrt(c)时,有b >= Math.sqrt(c), 故模到这个数的平方根即可
代码如下:
public static void main(String[] args) {
// TODO Auto-generated method stub
int sum = 0;
for(int i = 100; i < 200; i ++){
if(isPrime(i)){
System.out.print(i + " ");
sum++;
}
}
System.out.print("\n素数有"+sum+"个");
}
static boolean isPrime(int n){
for(int i = 2; i <= Math.sqrt(n); i++){
//模的尽则不为素数
if(n%i==0){
return false;
}
}
return true;
}
结果: