用Python实现1~500之内的所有素数相加之和

本文介绍了如何用Python通过双重for循环和函数设计,找出1到500之间的素数并计算它们的和。通过理解素数定义和循环原理,逐步优化代码,最终实现高效求和。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

## 用Python实现1~500之内的所有素数相加之和

首先我们应了解素数的定义,找到最关键的,大于1并且只能被1和自身整除的数称为素数。
既然是编程,那就应该有编程思想,如何将数学模型框架用代码表示出来。
这里我们采用函数调用来解决这个题,函数定义如下 def 函数名(参数表列):表达式。
同时我们应知道Python当中的for的语法规则:for 变量 in range(i,j,k)i为变量的初始值,j为变量的最终值+1,即为开区间,k为i到j的步长,默认为1。即C语言当中for的表达式3,i的增值方式,每次循环过后i+k。
知晓了这些之后,我们进行分析,如下:
首先素数有无穷多个,代值求解法无论是个人或者计算机而言都行不通,既然已经知道素数只能被1和其本身整除,那就代表比他小的其他数都不能整除该素数,即余数不为0.所以我们可以一种循环的方式先尝试将某个数除以比他小的正整数:
代码及运行结果如下:

def divide(i):
    sum = 0
    for j in range(1,i+1):
        if i%j==0:
            sum +=0
            print("%d不是素数"%i)
        elif i%j!=0:
            sum +=i
            print("%d是素数"%i)
    return sum
print("该素数为%d"%divide(10))

在这里插入图片描述
我们可以看到运行结果,10除以1~10的各个数时,10能整除以1,2,5,10。不能整除3,4,6,7,8,9。注意for后为什么为i+1,如前面所说,因为是开区间,取不到那个数,所以加1为取到那个数继续运行。
所以下一步我们想,因为只能除以自身和1,那么我们增设一个变量,当余数为0时,我们让变量加1,最终如果为素数的话,结果变量应该是为2,改变代码:
代码及运行结果如下:

def divide(i):
    sum = 0
    k = 0
    for j in range(1,i+1):
        if i%j==0:
            k +=1
        elif i%j!=0:
            k +=0
    if k==2:
        sum +=i
    else:
        print("%d不是素数"%j)
    return sum
print("该素数为%d"%divide(7))

在这里插入图片描述
此时我们可以看到,当输入7时,调用函数,实参传给形参,进入for循环,注意这里的for循环是一个一个进行的,我这里笼统的说,用7除以1~7各数得到余数用if判断其是否为0,再进行变量k的值的变化。
现在我们确定了一个值如何判断是否为素数,那么1~500之间我们应该如何能,既然7能够从1到7挨个除,那1到500当然也能使用for循环进行遍历。此时应该为双重for循环,因为从1到500是都要判断的:
代码及运行结果如下:

def divide(i):
    sum =0
    for j in range(1,i+1):
        k =0
        if k==1:
            continue
        for t in range(1,j+1):
            if j%t ==0:
                k +=1
        if k==2:
            sum +=j
    return sum
print("请输出1-500中素数的和:%d"%divide(11))

在这里插入图片描述
注意此时变量k的位置,由于每次进行for循环,都是重新开始对k进行赋值判断,所以它应该在第一个for之后进行重置,这与C语言当中的选择法有些许相似。
该题不使用函数调用,可直接将i进行赋值求解
这里我代入的值是11,把11改成500即可得到其答案。
如觉得还可以的话,请多多点赞加收藏哦!有疑问可在下方留言。

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值