输出打印1-500之间的质数
程序员文章站
2024-03-14 21:25:35
...
问题解析
1.质数的概念: 质数是指在大于1的自然数中,除了1和它本身以外,再也没有其他因数的自然数;
代码实现:如下所示
方法一:最简单,最笨的方法,依次对 (1,n) 区间的每一个数取余并逐一判断取余结果,若结果为零,说明该数不是质数,若结果不为零,则说明该数为质数,将该数打印输出即可
public static void main(String[] args) {
// 外层循环控制被除数的递增
for (int i = 2; i <= 500; i++) {
// 内层循环控制被除数的递增
for (int j = 2; j < i; j++) {
if (i%j == 0){
}
}
if(flag){
System.out.println(i);
}
}
}
}
**方法二:**判断一个数是否是质数时,只要试到它的平方根即可。一个合数分解质因数时,一定有一部分因数大于等于该数的平方根,且另一部分因数小于等于该数的平方根,如果小于等于其平方根且大于1的自然数中均找不到该数的因数,那么大于等于其平方根的自然数中也必定找不到该数的因数,故而可以判定该数为素数,反之,只要有在小于等于其平方根的自然数(1除外)中找到至少一个因数,那么必定还有至少一个因数大于等于该数的平方根,故而可以判定为合数。因此,循环条件设置为从[2,sqrt(n)] 即可。
public static void main(String[] args) {
for(int i = 1;i<=500;i++) {
if(prime(i)) {
System.out.println(i);
}
}
}
public static boolean prime(int n){
if(n < 2){
return false;
}
if(n == 2 || n == 3){
return true;
}else{
int a = (int)Math.sqrt(n);
for(int i = 2; i <= a ; i++){
if(n % i == 0){
return false;
}
}
return true;
}
}