打印100以内所有的质数

需求:打印100以内所有的质数。质数:大于1的自然数中,只能被1自身整除的数。

public static void main(String[] args) {
		// TODO Auto-generated method stub
		for (int i = 2; i <=100; i++) {
			boolean p=true;
			for(int j=2;j<i;j++) {
				if ( i%j  == 0 ) {
				p=false;
				System.out.println( i+ "不是素数");

				break;				
			}				
			}
			if(p) {
				System.out.println(i+"是素數");
			}			
			}
	}
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
方法一:暴力枚举法 暴力枚举法是最朴素的判断素数的方法,即遍历从2到目标数-1的所有自然数,判断目标数是否能被整除。如果能被整除,则目标数不是素数;反之,则是素数。 下面是代码实现: ```python def is_prime(num): if num <= 1: return False for i in range(2, num): if num % i == 0: return False return True for i in range(2, 101): if is_prime(i): print(i) ``` 方法二:优化暴力枚举法 在暴力枚举法中,我们可以发现,如果一个数可以被分解成两个数的乘积,那么其中一个数肯定小于等于它的平方根。因此,在判断素数时,我们只需要遍历从2到目标数平方根的所有自然数。 下面是代码实现: ```python import math def is_prime(num): if num <= 1: return False for i in range(2, int(math.sqrt(num)) + 1): if num % i == 0: return False return True for i in range(2, 101): if is_prime(i): print(i) ``` 方法三:埃拉托斯特尼筛法 埃拉托斯特尼筛法是一种较为高效的素数筛法,其基本思想是从小到大枚举每个素数,然后将其倍数全部标记为合数。这样在后面的判断中就可以直接跳过这些合数。 下面是代码实现: ```python def eratosthenes(n): primes = [] is_prime = [True] * (n + 1) for i in range(2, n + 1): if is_prime[i]: primes.append(i) j = i * i while j <= n: is_prime[j] = False j += i return primes primes = eratosthenes(100) for prime in primes: print(prime) ``` 方法四:欧拉筛法 欧拉筛法是一种更为高效的素数筛法,其基本思想是在埃拉托斯特尼筛法的基础上,将每个合数标记为它的最小质因子,这样可以避免重复标记。具体实现可参考下面的代码: ```python def euler(n): primes = [] is_prime = [True] * (n + 1) for i in range(2, n + 1): if is_prime[i]: primes.append(i) for j in range(len(primes)): if i * primes[j] > n: break is_prime[i * primes[j]] = False if i % primes[j] == 0: break return primes primes = euler(100) for prime in primes: print(prime) ``` 以上四种方法都可以用来判断素数,并打印100以内所有素数。其中暴力枚举法是最简单的,但时间复杂度较高;而欧拉筛法则是最高效的,但实现较为复杂。根据实际需要选择不同的方法即可。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值