📅  最后修改于: 2023-12-03 15:10:02.173000             🧑  作者: Mango
半素数是指正好有两个不同素数因子的正整数。例如,6是半素数,因为它的因子是2和3,这两个因子都是素数。
下面是一个Python函数,用于打印所有小于或等于给定数N的半素数。
def print_semiprimes(N):
primes = [] # 存储所有素数
semiprimes = [] # 存储所有半素数
for i in range(2, N+1):
if is_prime(i):
primes.append(i)
# 在素数列表中找到两个因子不同的数
for j in primes:
if i*j <= N:
semiprimes.append(i*j)
else:
break
# 打印半素数列表
semiprimes.sort()
for semiprime in semiprimes:
print(semiprime)
def is_prime(n):
# 判断n是否为素数
if n < 2:
return False
for i in range(2, int(n**0.5)+1):
if n % i == 0:
return False
return True
我们首先定义两个列表,primes用于存储所有素数,semiprimes用于存储所有半素数。我们使用一个for循环遍历2到N之间的所有数字,如果这个数字是素数,我们就把它添加到素数列表中。
然后我们在素数列表中找到所有两个因子不同的数,这些数的积即为半素数。我们将这些半素数添加到我们的半素数列表中。
在找到所有的半素数后,我们简单地将结果按升序打印出来。
我们还定义了一个名为is_prime的辅助函数,该函数用于检查给定的数字是否为素数。
这个函数的时间复杂度是O(N^2),因为我们在for循环中使用了两个嵌套循环。我们可以优化算法以达到更好的时间复杂度。