欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

输出打印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;
		}		
	}