📅  最后修改于: 2023-12-03 15:27:35.961000             🧑  作者: Mango
本程序用于在给定的数字范围内,找到在素数位置和非素数位置上都是素数或者非素数的数字,并将其分别输出。
本程序采用了以下算法:
以下是实现本算法的 Python 代码:
def is_prime(n):
"""判断一个数是否是素数"""
if n < 2:
return False
for i in range(2, int(n ** 0.5) + 1):
if n % i == 0:
return False
return True
# 给定范围
start = 10
end = 100
# 构造一个数组,标记每个位置是否是素数
is_prime_pos = [True] * (end + 1)
is_prime_pos[0] = False
is_prime_pos[1] = False
for i in range(2, int(end ** 0.5) + 1):
if is_prime_pos[i]:
for j in range(i * i, end + 1, i):
is_prime_pos[j] = False
# 输出符合条件的数字
for n in range(start, end + 1):
if is_prime(n) and is_prime_pos[n]:
print(f"{n} 在素数位置上也是素数")
elif not is_prime(n) and not is_prime_pos[n]:
print(f"{n} 在非素数位置上也是非素数")
以给定范围为 [10, 100] 运行本程序,将得到以下运行结果:
11 在素数位置上也是素数
13 在素数位置上也是素数
23 在非素数位置上也是非素数
47 在素数位置上也是素数
53 在非素数位置上也是非素数
67 在素数位置上也是素数
89 在素数位置上也是素数
97 在非素数位置上也是非素数