当前位置:   article > 正文

用Python实现1~500之内的所有素数相加之和_1到500之间的素数个数及之和

1到500之间的素数个数及之和

## 用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))
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11

在这里插入图片描述
我们可以看到运行结果,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))
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14

在这里插入图片描述
此时我们可以看到,当输入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))
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13

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

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/Monodyee/article/detail/329254?site
推荐阅读
相关标签
  

闽ICP备14008679号