输入一个大于2的自然数寻找小于这个自然数的素数

题目:使用列表实现筛选法求素数。编写程序输入一个大于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的自然数再用函数判断是否为素数,如果是就将这个数装进列表中,打印输出

这只是我个人的思路(仅个人观念),网上还有很多好的算法思路

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值