题目:使用列表实现筛选法求素数。编写程序输入一个大于2的自然数,然后输出小于该数字的所有素数组成的列表。
思路一: 输入一个数,并且建立一个空列表,通过循环将所有小于这个数的的自然数存放进入这个空的列表之中
list1 = []
n = int(input("输入一个大于2的自然数:"))
for i in range(3,n):# 遍历所有满足小于这个输的自然数
list1.append(i) # 将数据存入这个空的列表中
,在建立一个空的列表用来存放将要删除(就是满足不是素数的)的数据
to_remove = []
通过两个循环,第一个循环就是遍历所有小于n的这个自然数第二个循环就是判断每一个自然数是否满足素数,如果不是素数就将这个数添加进入to_remove这个列表中存放
for t in range(3, a):# 循环列表
for j in range(2, t):#判断每一个数字
if t % j == 0:# t 就是满足不是素数的
to_remove.append(t) # 将要移除的数字添加到列表中
最后就是将to_remove (存放的就是不是素数的)这个列表里面的数从list1这个列表里面清除,剩下的数就是素数了
for num in to_remove:
if num in list1:
list1.remove(num)
print(list1)
最终代码:
list1 = []
a = int(input("输入一个大于二的自然数:"))
for i in range(3, a):# 循环遍历每一个数将他们存入一个列表中
list1.append(i)
to_remove = [] # 存储要移除的数字的列表
for t in range(3, a):# 循环列表
for j in range(2, t):#判断每一个数字
if t % j == 0:# t 就是满足不是素数的
to_remove.append(t) # 将要移除的数字添加到列表中
for num in to_remove:#遍历不是素数中的每一个数字
if num in list1:# 如果在全部数字的列表中的话就删除这个不是素数的数
list1.remove(num)
print(list1)# 打印输出
苦逼大学生想到的第一个解题思路()我是菜鸡。
思路二:
# 使用列表实现筛选法求素数。编写程序输入一个大于2的自然数,然后输出小于该数字的所有素数组成的列表。
def check_num(n):
if n == 3:
return 3
count = 0
if n>3:
for i in range(2,n+1):
if n % i != 0:
count += 1
if count == n-2:
return n
else:
return 0
list1 = []
n = int(input("输入一个大于2的自然数:"))
for i in range(2,n+1):
if check_num(i):
list1.append(i)
print(list1)
先用函数检查输入的n是否为素数如果是的话就返回它本身,如果不是就返回0,再创建一个空的列表用来存放素数,然后通过循环遍历每一个小于2的自然数再用函数判断是否为素数,如果是就将这个数装进列表中,打印输出
这只是我个人的思路(仅个人观念),网上还有很多好的算法思路