python计算素数和(以2-1000举例)

目录

方法一:方法二:总结

方法一:

思路是大于2的素数除以2到比他本身小1的数都除不尽,即进行了(素数值-2)次余数不为0的运算,统计这种运算次数

缺点是这种方法要手动添加2这个素数

代码如下:

data1=[]
count=1                           #相当于手动加上了2
sum=2                           #因为此方法算不了2
for i in range(3,1001):            #3到1000之间的数
    for j in range(2,i):        #被除数要比除数小1,且大于等于2
        if i%j !=0:             #可能是素数,3%2!=0,3是素数,但4%3!=0,4不是素数
            data1.append(i)
            if len(data1) == i-2:       #用余数不为0的长度;如果是素数,data1中i的次数比i小2,例如5除以2、3、4都除不尽,data1中会有3个5
                count+=1
                sum+=i
    data1=[]                        #每一轮的i把j算完后要恢复空表格,以便计算下一轮
print(count,sum)

方法二:

思路是素数除以1或它本身,这两种情况可得到余数为0

这种方法比较简洁

代码如下:

sum=0
count=0
for i in range(2,1001):
    lst=[j for j in range(1,i+1) if i%j==0]       #用余数为0来判别
    if lst==[1,i]:        #用素数除以1到i的余数只有1和i
        count+=1
        sum+=i
print(count,sum)


总结

理解素数的含义后发现单单用循环套循环玩不了,故引入列表,并寻找可以实现的素数的规律

  • 5
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值