Python用20几行代码验证1000以内的正偶数(大于等于4)都能分解为两个素数之和

Python用20几行代码验证1000以内的正偶数(大于等于4)都能分解为两个素数之和,第1张

执行思路:

1-定义素数判断函数

2-执行循环嵌套

附加3-由于计算量较大,可以添加程序运行时计算运行时间

废话不多说,直接上代码:

#来自抗带的铁铁
def isprime(x): #定义素数判断函数
    k=int(pow(x,1/2))
    for i in range(2,k+1):
        if x%i==0:
            return False
        else:
            continue
    return True
import datetime #加入运行时
start=datetime.datetime.now()
count=1 #加入计数器,每行打印6个算式
for num in range(4,1000,2):
    for n in range(2,num):
        if isprime(n):
            for m in range(2,num):
                if isprime(m):
                    if m+n==num:
                        print("{}={}+{}".format(num,m,n),end=",")
                        count=count+1
                        if count==7:
                            print()
                            count=1
                            break
                        else:
                            continue
                    else:
                        continue
                else:
                    continue
end=datetime.datetime.now()
time=end-start
print("打印结束,用时{}".format(time))

运行结果:

4=2+2,6=3+3,8=5+3,8=3+5,10=7+3,10=5+5,
10=3+7,12=7+5,12=5+7,14=11+3,14=7+7,14=3+11,
16=13+3,16=11+5,16=5+11,16=3+13,18=13+5,18=11+7,
18=7+11,18=5+13,20=17+3,20=13+7,20=7+13,20=3+17,
22=19+3,22=17+5,22=11+11,22=5+17,22=3+19,24=19+5,
24=17+7,24=13+11,24=11+13,24=7+17,24=5+19,26=23+3,
26=19+7,26=13+13,26=7+19,26=3+23,28=23+5,28=17+11,
28=11+17,28=5+23,30=23+7,30=19+11,30=17+13,30=13+17,
30=11+19,30=7+23,32=29+3,32=19+13,32=13+19,32=3+29,
34=31+3,34=29+5,34=23+11,34=17+17,34=11+23,34=5+29,
34=3+31,36=31+5,36=29+7,36=23+13,36=19+17,36=17+19,
36=13+23,36=7+29,36=5+31,38=31+7,38=19+19,38=7+31,
40=37+3,40=29+11,40=23+17,40=17+23,40=11+29,40=3+37,
42=37+5,42=31+11,42=29+13,42=23+19,42=19+23,42=13+29,
42=11+31,42=5+37,44=41+3,44=37+7,44=31+13,44=13+31,
44=7+37,44=3+41,46=43+3,46=41+5,46=29+17,46=23+23,
46=17+29,46=5+41,46=3+43,48=43+5,48=41+7,48=37+11,
48=31+17,48=29+19,48=19+29,48=17+31,48=11+37,48=7+41,
48=5+43,50=47+3,50=43+7,50=37+13,50=31+19,50=19+31,
50=13+37,50=7+43,50=3+47,52=47+5,52=41+11,52=29+23,
52=23+29,52=11+41,52=5+47,54=47+7,54=43+11,54=41+13,
54=37+17,54=31+23,54=23+31,54=17+37,54=13+41,54=11+43,
54=7+47,56=53+3,56=43+13,56=37+19,56=19+37,56=13+43,
56=3+53,58=53+5,58=47+11,58=41+17,58=29+29,58=17+41,
58=11+47,58=5+53,60=53+7,60=47+13,60=43+17,60=41+19,
60=37+23,60=31+29,60=29+31,60=23+37,60=19+41,60=17+43,
60=13+47,60=7+53,62=59+3,62=43+19,62=31+31,62=19+43,
62=3+59,64=61+3,64=59+5,64=53+11,64=47+17,64=41+23,
64=23+41,64=17+47,64=11+53,64=5+59,64=3+61,66=61+5,
66=59+7,66=53+13,66=47+19,66=43+23,66=37+29,66=29+37,
66=23+43,66=19+47,66=13+53,66=7+59,66=5+61,68=61+7,
68=37+31,68=31+37,68=7+61,70=67+3,70=59+11,70=53+17,
70=47+23,70=41+29,70=29+41,70=23+47,70=17+53,70=11+59,
70=3+67,72=67+5,72=61+11,72=59+13,72=53+19,72=43+29,
72=41+31,72=31+41,72=29+43,72=19+53,72=13+59,72=11+61,
72=5+67,74=71+3,74=67+7,74=61+13,74=43+31,74=37+37,
74=31+43,74=13+61,74=7+67,74=3+71,76=73+3,76=71+5,
76=59+17,76=53+23,76=47+29,76=29+47,76=23+53,76=17+59,
76=5+71,76=3+73,78=73+5,78=71+7,78=67+11,78=61+17,
78=59+19,78=47+31,78=41+37,78=37+41,78=31+47,78=19+59,
78=17+61,78=11+67,78=7+71,78=5+73,80=73+7,80=67+13,
80=61+19,80=43+37,80=37+43,80=19+61,80=13+67,80=7+73,
82=79+3,82=71+11,82=59+23,82=53+29,82=41+41,82=29+53,
82=23+59,82=11+71,82=3+79,84=79+5,84=73+11,84=71+13,
84=67+17,84=61+23,84=53+31,84=47+37,84=43+41,84=41+43,
84=37+47,84=31+53,84=23+61,84=17+67,84=13+71,84=11+73,
84=5+79,86=83+3,86=79+7,86=73+13,86=67+19,86=43+43,
86=19+67,86=13+73,86=7+79,86=3+83,88=83+5,88=71+17,
88=59+29,88=47+41,88=41+47,88=29+59,88=17+71,88=5+83,
90=83+7,90=79+11,90=73+17,90=71+19,90=67+23,90=61+29,
90=59+31,90=53+37,90=47+43,90=43+47,90=37+53,90=31+59,
90=29+61,90=23+67,90=19+71,90=17+73,90=11+79,90=7+83,
92=89+3,92=79+13,92=73+19,92=61+31,92=31+61,92=19+73,
92=13+79,92=3+89,94=89+5,94=83+11,94=71+23,94=53+41,
94=47+47,94=41+53,94=23+71,94=11+83,94=5+89,96=89+7,

.......

.......
996=643+353,996=617+379,996=613+383,996=607+389,996=599+397,996=587+409,
996=577+419,996=563+433,996=557+439,996=547+449,996=509+487,996=487+509,
996=449+547,996=439+557,996=433+563,996=419+577,996=409+587,996=397+599,
996=389+607,996=383+613,996=379+617,996=353+643,996=349+647,996=337+659,
996=313+683,996=277+719,996=269+727,996=263+733,996=257+739,996=239+757,
996=227+769,996=223+773,996=199+797,996=173+823,996=167+829,996=157+839,
996=139+857,996=137+859,996=113+883,996=109+887,996=89+907,996=67+929,
996=59+937,996=43+953,996=29+967,996=19+977,996=13+983,996=5+991,
998=991+7,998=967+31,998=937+61,998=919+79,998=859+139,998=787+211,
998=769+229,998=757+241,998=727+271,998=691+307,998=661+337,998=631+367,
998=619+379,998=601+397,998=577+421,998=541+457,998=499+499,998=457+541,
998=421+577,998=397+601,998=379+619,998=367+631,998=337+661,998=307+691,
998=271+727,998=241+757,998=229+769,998=211+787,998=139+859,998=79+919,
998=61+937,998=31+967,998=7+991,打印结束,用时0:02:19.913086
 

存在问题:有重复结果可以通过修改代码循环块的区间来去掉重复结果,但要提前打印4,6的情况,否则有问题

去掉重复结果代码:

def isprime(x):
    k=int(pow(x,1/2))
    for i in range(2,k+1):
        if x%i==0:
            return False
        else:
            continue
    return True
import datetime
start=datetime.datetime.now()
count=1
print("4=2+2,6=3+3")
for num in range(8,1000,2):
    for n in range(2,int(num/2)):
        if isprime(n):
            for m in range(int(num/2),num):
                if isprime(m):
                    if m+n==num:
                        print("{}={}+{}".format(num,m,n),end=",")
                        count=count+1
                        if count==7:
                            print()
                            count=1
                            break
                        else:
                            continue
                    else:
                        continue
                else:
                    continue
end=datetime.datetime.now()
time=end-start
print("打印结束,用时{}".format(time))

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/langs/868053.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-05-13
下一篇2022-05-13

发表评论

登录后才能评论

评论列表(0条)

    保存