美文网首页Python爬虫作业
素数及完全数的筛选

素数及完全数的筛选

作者: 昆明石头 | 来源:发表于2017-05-26 19:37 被阅读0次

一、求取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

相关文章

  • 素数及完全数的筛选

    一、求取100以内的素数 由素数的概念可知,其只能被1和自身整除,也就是说,若该数为i,那么要想其为素数,小于该数...

  • Algorithm

    素数筛选

  • 素数筛选

    今天在面试时被问到了一个问题:求不大于n的最大素数,当时只想出暴力解法,回来查资料找到了正确的求解方法。 素数筛法...

  • 筛选素数/筛选质数

  • 区间素数线性筛选

    区间素数线性筛选 假设应用场景为求一个区间长度远小于右端点的所有素数,该区间为 。如若使用朴素素数线性筛选,则需...

  • 素数线性筛选

    素数线性筛选 素数的定义是除了1和自身能被整除外,没有其他数能被它整除。除此之外,1既不是素数,也不是合数。因此,...

  • 素数算法

    寻找素数的算法有很多,最著名应是筛选法,以下是笔者用JavaScript编写的一个找素数的函数,借鉴了各种找素数的...

  • Python3 欧拉计划 问题41-45

    41、全数字的素数   如果一个n位数恰好使用了1至n每个数字各一次,我们就称其为全数字的。例如,2143就是一个...

  • RSA加密解密算法—数论基础

    本章涉及知识点1、素数的定义2、寻找素数算法—短除法3、寻找素数算法—筛选法4、互质关系5、欧拉函数的证明6、欧拉...

  • 筛选法求素数

网友评论

    本文标题:素数及完全数的筛选

    本文链接:https://www.haomeiwen.com/subject/qjutfxtx.html