python求一个小于该自然数的所有素数(或质数)

for i in range(2,n):
    for j in range(2,i):
        if i%j==0 :
           break
    else:
            q.append(i)

print(i)

-------------下面附质素相加等于自然数,且相减最小-----------

方法一:

a = int(input())   
b = []
for i in range(2, a ):
    for j in range(2, i):
        if i % j == 0:
            break
    else:

        b.append(i)                #先求出所有的质数列表
su=1000                  #此值要大于输入的值a
for y in b:            #去所有质数进行依次匹配

    if (a-y) in b:   #判断减法后的值也在列表里及也是质数
        k=a-2*y
        if k>=0 and su>k:   #求相互减去后值最小,这里也可以取相加最大,根据要求自行改变

            su=k    
print((a-su)//2)
print((a-((a-su)//2)))

方法二(取巧):

n = int(input())
        prime = []
        for i in range(int(n/2), 1,-1):     #取值一半,然后从大到小进行判断,生成的列表 默认按从到到小进行排序

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值