素数及完全数的筛选

一、求取100以内的素数

由素数的概念可知,其只能被1和自身整除,也就是说,若该数为i,那么要想其为素数,小于该数且不能被整除的个数必须为i - 2个,因此有如下代码:

N = input("请输入一个整数,以判断求取范围:")
a =[]
for i in range(2,N+1):#对数进行遍历
    m = 0
    for j in range(1,i+1): #找因子
        if i % j == 0:
            continue
        else:
            m = m + 1
    if m == i -2: #当不能被整除的个数为i-2个时,为素数。
        a.append(i)
print(a)

结果如下:
[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]

二、求取1000以内的完全数

由完全数的概念可知,如果一个数的所有的真因子(即除了自身以外的)的和(即因子函数),恰好等于它本身,那么这个数就为完全数。因此求取一定范围的完全数也就是判断真因子之和与该数值的关系的过程。现在贴上代码:

num = input('请输入一个数字,以确定判断范围:')
a = []
for i in range(2,int(num)):
    m = []
    for j in range(1,i):
        if i % j == 0:
            m.append(j)
        print(m)
    b=0
    for n in m:
        b = b + n
    print(b)
    if b == i:
        a.append(i)
print(a) 

最终运行的结果显示,在1000以内,完全数有三个:6,28,496

你可能感兴趣的:(素数及完全数的筛选)