# 问题5(本次作业的20%):编写一个程序,允许用户输入整数N,并打印所有小于N的素数。
# 例如,当用户输入N=10时,程序应输出小于10的素数包括:程序每行最多应输出8个素数。
# 您的程序还应该足够健壮,能够处理可能的不正确输入(例如,userInputs字符串
n = input("Please input an integer larger than 1:")
for i in n:
if i < '0' or i > '9' or n <= '1':#小于1 或者字符串里面有非数字
n = input("The num is null,Please input an integer larger than 1")#重复输入
print(f"The prime numbers smaller than {n} include:")#输出提示
num1 = int(n)#转成整数
lit = []
if num1 == 2:
lit.append(num1)
else:
for i in range(2, num1):
k = 0
for j in range(1, i+1):#判断是否为素数
if i % j == 0:
k += 1
if k == 2:
lit.append(i)
a = 1
for x in lit:
if a % 8 != 0:#单行输出8个数字
print(x,end="\t")
a += 1
else:
print(x)
a = 1
N = int(input())
while N<=1:
N = int(input())
N=input("please input an integer number larger than 1:")
qualified= 0 #这个用来判断是否输入正确
while not qualified:
if type(eval(N))!=type(1) or eval(N)<=1:
print("input error")
N = input("please input an integer number larger than 1:")
else:
qualified=1 #如果输入正确就设置为1,以跳出循环
def getPrime():
N = input('Please input an integer greater than 1 \n')
try: #使用try,把不能转换成整数的字符串排除掉
n = int(N)
if n > 1: #判断输入的数是正整数
print('The prime numbers smaller than ', n, ' include:')
primeCount = 1 # 记录每行输出的素数个数,题目要求每行最多输出8个
for i in range(2, n):
for j in range(2, i+1):
if i % j == 0:
break
if j == i:
if primeCount != 8: # 不到8个就输出空格
print(i, end = ' ')
primeCount += 1
else: # 到8个了就换行
print(i)
primeCount = 1
else:
print('please input integer greater than 1')
except :
print('inputs are not numbers')
while True:
getPrime()
while循环啊,一直重复即可
# 输入
while True:
try:
N = int(input("Please input an integer larger than 1: "))
if N>1:
break
except:
print("Your input is invalid, please input again")
# 主程序
print("The prime numbers smaller than", N, "include: ")
prime = set(range(2,N)) | {2}
for i in range(2,N//2+1):
prime -= set(range(2*i,N,i))
prime = list(prime)
# 输出
n = len(prime)
for i in range(n//8+1):
print(*prime[i*8:(i+1)*8])