题目要求
输入整数m,将所有大于1小于整数m的素数存入所指定的数组中(数组最多只存放100个素数,超过则提示“OVERFLOW”),输出各素数——若输入的m≤2,则提示“NO”,程序终止。注:素数(Prime Number),亦称质数,指在一个大于1的自然数中,除了1和此整数自身外,没法被其他自然数整除的数。
输入格式:
输入一个非0的整数。
输出格式:
素数的输出格式为每个素数5列宽、右对齐、每行显示15个。
输入样例:
100
输出样例:
2 3 5 7 11 13 17 19 23 29 31 37 41 43 47
53 59 61 67 71 73 79 83 89 97
输入样例:
568
输出样例:
OVERFLOW
输入样例:
1
输出样例:
NO
代码实现
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
def print_primes(m):
if m <= 2:
print("NO")
return
primes = []
for num in range(2, m):
if is_prime(num):
primes.append(num)
if len(primes) > 100:
print("OVERFLOW")
return
# 输出素数
column_width = 5
num_per_line = 15
for i, prime in enumerate(primes, 1):
print(f"{prime:>{column_width}}", end='')
if i % num_per_line == 0:
print()
# 从用户输入获取整数m
m = int(input())
print_primes(m)