BC78 筛选法求素数

描述

用筛选法求n以内的素数。筛选法求解过程为:将2~n之间的正整数放在数组内存储,将数组中2之后的所有能被2整除的数清0,再将3之后的所有能被3整除的数清0 ,以此类推,直到n为止。数组中不为0 的数即为素数。

输入描述:

多组输入,每行输入一个正整数(不大于100)。

输出描述:

针对每行输入的整数n,输出两行,第一行,输出n之内(包括n)的素数,用空格分隔,

第二行,输出数组中2之后被清0 的个数。每行输出后换行。

示例1

输入:

20

输出:

2 3 5 7 11 13 17 1911

解答:

n = int(input())
m = list(range(2, n + 1))  # 存储2~n之间的正整数放在数组内
a = 0
for i in m:
    for j in m:
        if j % i == 0 and j != i:
            m.remove(j)
            a += 1

print(*m)  # 列表前面加星号作用是将列表中所有元素解开成独立的参数
print(a)

解析:

主要考察质数的计算,质数,也就是素数(指在大于1的自然数中,除了1和它本身以外不再有其他因数的自然数。)在这里是剔除不是质数的元素,也要求了先把2之后的数排除,再排除3之后的,直接用for循环嵌套,先2后3,那么第一层就是2开始 ,第二层也是2开始,第二次一直循环没结束后,第一层继续循环。那么筛掉不是质数的数,就用第二层除以第一层,如果能除尽还不是本身就不是质数,直接从列表中删除即可。删除后+1即为删除数。

20211202

你可能感兴趣的:(Exam,python)