请写一个程序写出从2到n的所有素数以及半素数
时间: 2024-10-02 16:02:30 浏览: 42
首先,我们先解释一下什么是素数和半素数。素数是指大于1的自然数,除了1和它本身以外不再有其他因数。而半素数(也叫合数)是指除了1和自身外还有其他因数的正整数。
下面是一个Python程序,用于找出从2到n的所有素数和半素数:
```python
def is_prime(num):
if num < 2:
return False
for i in range(2, int(num ** 0.5) + 1):
if num % i == 0:
return False
return True
def is_semiprime(num):
factors = []
for i in range(2, num + 1):
if num % i == 0 and is_prime(i):
factors.append(i)
if len(factors) > 2:
break
if len(factors) == 2:
return True
else:
return False
def find_primes_and_semi_primes(n):
primes = [i for i in range(2, n+1) if is_prime(i)]
semi_primes = [i for i in range(4, n+1) if is_semiprime(i)] # 半素数排除2和3,因为它们不是半素数
return primes, semi_primes
# 测试
n = 30
prime_list, semiprime_list = find_primes_and_semi_primes(n)
print("2到{}之间的素数有:".format(n), prime_list)
print("2到{}之间的半素数有:".format(n), semiprime_list)
阅读全文
相关推荐



















