当前位置:   article > 正文

【循序渐进学Python】使用多种方法实现素数之和_python求一个数的所有因数之和

python求一个数的所有因数之和

【循序渐进学Python】运用Python实现素数之和

今天我们运用我们所学的知识,写一个案例,进一步对所学知识进行熟悉!

素数之和

需求:

  • 求出1-200之内所有的素数之和素数是指只能被1和自身整除的数

方法一:

思路:
  1. 我们可以先求出1-200之间的所有素数
  2. 然后把所有素数放到列表中进行最后的相加求和
实现:
# 首先定义一个空的列表
num = []
# 然后for循环遍历1-200之间的所有数
for i in range(1, 201):
    # 然后再用for循环遍历2到i之间的所有数
    # 因为1肯定可以被任何数整除,所以我们从2开始
    # 然后range方法是左开右闭所以我们选择2到i,但是不包括i
    # 把比i小的数都除一遍
    for temp in range(2, i):
        # 然后用if进行判断
        # 当i除于temp取余等于0的话
        if i % temp == 0:
            # 那么说明,在2到i之间还有数可以被整除,则不是素数了,跳出循环
            break
    else:
        # 反之,则把i添加到上面我们定义好的空列表中去
        num.append(i)

print(num)
# 对列表输出进行查看
# 定义一个变量让它等于0
ret = 0
# for循环遍历列表
for i in num:
    # 进行相加
    ret += i
# 最后输出列表相加的和值
print(ret)
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28

方法二:

思路:
  1. 利用列表推导式把1-200所有数放到一起
  2. 定义函数判断是否是素数
  3. 利用高阶函数进行过滤,求和得出最终结果
实现:
# 首先我们导入高阶函数reduce需要的包
import functools

# 然后利用列表推导式把1-200的所有数放到一个列表中
num = [i for i in range(1, 201)]


# 定义一个函数
def fun(x):
    # for循环遍历2到x之间的数
    # x 代表高阶函数中传入函数的序列
    for temp in range(2, x):
        # 利用if 进行判断
        # 如果取余等于0的话
        # 那么该数就不是素数
        if x % temp == 0:
            # 返回一个 False
            return False
    else:
        # 反之,返回一个 True
        return True


# 利用高阶函数filter进行过滤,过滤掉不是素数的数
ret = filter(fun, num)
# 然后利用匿名函数和高阶函数reduce进行累计求和
res = functools.reduce(lambda x, y: x + y, list(ret))
# 得出最后的结果
print(res)
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/AllinToyou/article/detail/329314
推荐阅读
相关标签
  

闽ICP备14008679号