试编写Python程序,根据哥德巴赫猜想1对100000内的偶数进行验证 Python验证哥德巴赫猜想之一

\u8bd5\u7f16\u5199Python\u7a0b\u5e8f,\u6839\u636e\u54e5\u5fb7\u5df4\u8d6b\u731c\u60f3\u4e00:\u4efb\u4f55\u5927\u4e8e6\u7684\u5076\u6570\u90fd\u53ef\u8868\u793a\u4e3a\u4e24\u4e2a\u7d20\u6570\u4e4b\u548c,\u5bf9100000\u5185\u7684\u5076\u6570\u8fdb\u884c\u9a8c\u8bc1

#coding=utf-8import sys,timefrom math import sqrtdef isprime(num): for i in range(2,int(sqrt(num))+1): if num%i==0: return False return True def gedebahe(num): for i in range(2,num//2+1): if isprime(i) and isprime(num-i): return True return Falsesedef main(n): for i in range(6,n+1,2): if not gedebahe(i,L): print('fail at number {}'.format(i)) break else: tip='success: all evens in {} can be the sum of two primes.' print(tip.format(n))if __name__=='__main__': start=time.time() n=100000 if len(sys.argv)>1: n=int(sys.argv[1]) main(n) end=time.time() print('cost {} seconds'.format(end-start))[willie@bogon pys]$ python gedebahe.py
success: all evens in 100000 can be the sum of two primes.
cost 24.8260421753 seconds
#coding=utf-8import sys,timefrom math import sqrtdef primes(n): # prepair data space plist = [0, 0] + list(range(2,n+1)) for i in range(2, int(sqrt(n))+1): if plist[i]: plist[i+i::i] = [0] * len(plist[i+i::i]) return filter(None, plist) def gedebahe(n,L): for i in L: if (n-i) in L: return True elif i>n//2+1: return Falsedef main(n): L=list(primes(n)) for i in range(6,n+1,2): if not gedebahe(i,L): print('fail at number {}'.format(i)) break else: tip='success: all evens in {} can be the sum of two primes.' print(tip.format(n))if __name__=='__main__': start=time.time() n=100000 if len(sys.argv)>1: n=int(sys.argv[1]) main(n) end=time.time() print('cost {} seconds'.format(end-start))[willie@bogon pys]$ python gedebahe.py
success: all evens in 100000 can be the sum of two primes.
cost 70.5533659458 seconds

a = []f = {}count=0# \u904d\u5386\u6570\u5b57for i in range(2,2000): for x in range(2,2000): if i%x == 0: f[i] = f.get(i, 0) + 1 # \u53d6\u51fa\u6240\u6709\u8d28\u6570for i in f: if int(f[i]) == 1: a.append(i) else: pass# \u6253\u5370\u6240\u6709\u8d28\u6570\u7684\u7b97\u6cd5\uff0c\u5373\u5076\u6570\u7b49\u4e8e2\u4e2a\u8d28\u6570\u4e4b\u548cfor i in a: for x in a: l = i + x if l%2 == 0 and l = x: count+=1 print("%s=%s+%s" %(l,i,x),end=' ') if count%6==0: print(end='\n')\u5728python3.5\u4e0a\u8fd0\u884c\u6b63\u5e38\u3002

#usr/bin/env python3
import time
from math import sqrt

start=time.time()
n=100000
isprime=lambda p: all([p%d for d in range(2,int(sqrt(p))+1)])
for i in range(6,n+1,2):
    for j in range(2,i//2+1):
        if isprime(j) and isprime(i-j):        
            break
    else:
        print('fail at {}'.format(i))
        break
    print('{:.2f}%'.format(i/n*100),end='')        
else:
    print('
success: all evens in {} is the sum of two primes.'.format(n))
end=time.time()
print('consum time: {:.3f} seconds'.format(end-start))

[willie@bogon pys]$ python3 gede.py 

100.00%

success: all evens in 100000 is the sum of two primes

consum time: 16.739 seconds

#usr/bin/env python3
import sys
import time
from math import sqrt
from threading import Thread

isprime=lambda p: all([p%d for d in range(2,int(sqrt(p))+1)])

def sum_of_two_evens(num):
    for i in range(2,num//2+1):
        if isprime(i) and isprime(num-i):
            return True
    return False

interrupt = False

def check(a,b,per):
    global interrupt
    for i in range(a,b+1,2):
        if not sum_of_two_evens(i) or interrupt:           
            interrupt = True
            break
        if 1:
            print('{:.2f}%'.format((i-a)/(b-a)*100),end='')      
        
def main(n=100000):
    start=time.time()    
    thread_count=10    
    threads=[]
    a=6
    b=n//thread_count
    for i in range(thread_count):
        t=Thread(target=check,args=(a,b,i*thread_count))
        t.start()
        t.join()
        a,b=b,n//thread_count*(i+2)
    for t in threads:
        t.join()
    if interrupt:
        print('fail at number {}'.format(i))
    else:
        tip = 'Yes: all evens>6 in {} can be the sum of the primes.'.format(n)
        print('
{}
{} threads is used in this case.'.format(tip,thread_count))
    end=time.time()
    print('consum time: {:.3f} seconds'.format(end-start))

if __name__ == '__main__':
    if len(sys.argv)>1:
        main(int(sys.argv[1]))          
    else:
        main()

[willie@bogon pys]$ python3 gedethreads.py 

100.00%

Yes: all evens>6 in 100000 can be the sum of the primes.

10 threads is used in this case.

consum time: 16.486 seconds

#usr/bin/env python3
import sys
import time
import multiprocessing
from math import sqrt
from multiprocessing import Process

def isprime(p): 
    '''check whether is a prime
    >>> isprime(2),isprime(9),isprime(12)
    (True, False, False)
    >>> isprime(5),isprime(121),isprime(113)
    (True, False, True)
    '''
    return all([p%d for d in range(2,int(sqrt(p))+1)])

def sum_of_two_evens(num):
    '''check whether a num can be the sum of two evens
    >>> sum_of_two_evens(8)
    True
    >>> sum_of_two_evens(11)
    False
    '''
    for i in range(2,num//2+1):
        if isprime(i) and isprime(num-i):
            return True
    return False

tasks=[]

def saysuccess(n,task_count):
    tip = 'success: all evens>6 in {} can be the sum of the primes.'.format(n)
    print('
{}
{} processes is used in this case.'.format(tip,task_count))

def sayfail(i):
    print('
fail at number {}'.format(i))  
      
def check(a,b,p,start,c,n):
    '''check whether evens between a and b are all sum_of_two_evens'''
    global interrupt
    for i in range(a,b+1,2):
        if not sum_of_two_evens(i):     
            sayfail(i)      
            [t.terminate() for t in tasks]
            break
        if p==c-1:
            print('{:.2f}%'.format((i-a)/(b-a)*100),end='')   
    else:
        if p==c-1:
            saysuccess(n,c)
            print('consum time: {:.3f}'.format(time.time()-start))   
        

if __name__ == '__main__':
    start=time.time()
    import doctest
    doctest.testmod(verbose=True)
    n=100000
    if len(sys.argv)>1:
        n=int(sys.argv[1])         
    task_count=10    
    a=6
    b=n//task_count
    for i in range(task_count):
        t=Process(target=check,args=(a,b,i,start,task_count,n))        
        a,b=b,n//task_count*(i+2)
        t.start()        
        tasks.append(t)

[willie@bogon pys]$ python3 gedeprocess.py 

Trying:

isprime(2),isprime(9),isprime(12)

Expecting:

(True, False, False)

ok

Trying:

isprime(5),isprime(121),isprime(113)

Expecting:

(True, False, True)

ok

Trying:

sum_of_two_evens(8)

Expecting:

True

ok

Trying:

sum_of_two_evens(11)

Expecting:

False

ok

4 items had no tests:

__main__

__main__.check

__main__.sayfail

__main__.saysuccess

2 items passed all tests:

2 tests in __main__.isprime

2 tests in __main__.sum_of_two_evens

4 tests in 6 items.

4 passed and 0 failed.

Test passed.

100.00%

success: all evens>6 in 100000 can be the sum of the primes.

10 processes is used in this case.

consum time: 8.480



  • 璇曠紪鍐橮ython绋嬪簭,鏍规嵁鍝ュ痉宸磋但鐚滄兂涓:浠讳綍澶т簬6鐨勫伓鏁伴兘鍙〃绀轰负涓...
    绛旓細': start=time.time() n=100000 if len(sys.argv)>1: n=int(sys.argv[1]) main(n) end=time.time() print('cost {} seconds'.format(end-start))[willie@bogon pys]$ python gedebahe.pysuccess: all evens in 100000 can be the sum of two primes.cost 24....
  • 璇曠紪鍐橮ython绋嬪簭,鏍规嵁鍝ュ痉宸磋但鐚滄兂1瀵100000鍐呯殑鍋舵暟杩涜楠岃瘉_鐧惧害...
    绛旓細success: all evens in 100000 is the sum of two primes consum time: 16.739 seconds usr/bin/env python3import sysimport timefrom math import sqrtfrom threading import Threadisprime=lambda p: all([p%d for d in range(2,int(sqrt(p))+1)])def sum_of_two_evens(num): for ...
  • 鍝ュ摜鐢熸棩鐢Python鍙互缂栫▼浠涔?
    绛旓細鐢熸棩蹇箰python瀹炵幇鐢熸棩蹇箰浠g爜鐨勬柟娉曪細棣栧厛瑕佹寜銆怌TRL+R銆戦敭锛宑md杩涘叆鍛戒护琛岋紝杈撳叆pipinstallturtle瀹夎绗笁鏂瑰簱锛涚劧鍚庢墦寮pythonIDE锛屽皢鐩稿叧浠g爜澶嶅埗杩涘幓锛涙渶鍚庢寜蹇嵎閿瓼5杩涜淇濆瓨涓旀墽琛屽嵆鍙
  • 鐢Python楠岃瘉姝屽痉宸磋但鐚滄兂:浠讳綍涓涓ぇ浜6鐨勫伓鏁板潎鍙互琛ㄧず涓轰袱涓礌鏁...
    绛旓細x++) // 瀵100浠ュ唴鐨勫伓鏁 for(y=1;y<x;y++) //y<x鏀规垚y<x/2灏卞彲浠ュ幓鎺8=3+5 8=5+3杩欑被鐨勯噸澶嶄簡 {for(i=2;i<y;i++) //鍒ゆ柇y鏄惁涓虹礌鏁 if(y%i==0) break; if(i==y)
  • python鍩虹缂栫▼涓殑闂,闆跺熀纭瀛︿範!
    绛旓細python涓病鏈塭lse if ,鍙湁 elif if guess > respond:print( "鍝ワ紝澶т簡锛屽ぇ浜嗭紒" )temp=input( "璇疯緭鍏ユ洿灏忕殑鏁板瓧:" )guess = int( temp )count = count-1 else if guess < respond: #else if 鏀逛负elif
  • 鍝綅澶у摜鑳藉憡璇変竴涓python涓兘涓嶈兘瀹炵幇杩欎釜鎯虫硶,鎬庝箞鍐欑▼搴?姣斿璇?
    绛旓細鍙互浣跨敤寰幆锛嬪垏鐗囧拰鍒ゆ柇杩涜鎿嶄綔锛屾瘮鏂硅锛岃緭鍏ョ殑鏃跺欐妸鏁板瓧寰幆鍔犲叆瀹氫箟濂界殑绌烘暟缁勪腑鍒ゆ柇鏄惁涓/n濡傛灉鏄垯鎰忓懗鐫5浣嶆暟杈撳叆瀹屾垚宸茬粡杈撳叆涓虹┖銆傜劧鍚庢妸涓や釜鏁扮粍鍒囩墖瀵规瘮锛岀浉鍚屽垯鍔犲叆鏂版眰缁勪腑濡傛寰幆 鏈鍚庤緭鍑烘柊鏁扮粍
  • 濡備綍浣跨敤Python瀹炵幇鏂愭尝閭eFibonacci鍑芥暟
    绛旓細杈撳叆n锛岃緭鍑虹n涓狥ibonacci鏁帮紝n涓烘鏁存暟涓嬮潰鏄繖涔濈涓嶅悓鐨勯鏍硷細1锛夌涓娆鍐欑▼搴鐨Python绋嬪簭鍛橈細def fib(n): return nth fibonacci number璇存槑锛氱涓娆″啓绋嬪簭鐨勪汉寰寰閬靛惊浜虹被璇█鐨勮娉曡屼笉鏄缂栫▼璇█鐨勮娉曪紝灏辨嬁鎴戜竴涓紪绋嬪緢鐚涚殑鍝ヤ滑鏉ヨ锛屼粬鍐欑殑绗竴涓垽鏂棸骞寸殑绋嬪簭锛閲岄潰鐩存帴鏄繖涔堝啓鐨...
  • python鍦╳in7 涓婅繍琛屽嚭鐜伴棶棰,path绁為┈鐨勯兘鍔犱簡
    绛旓細鍥炵瓟锛氬ぇ鍝,python绋嬪簭涓嶆槸浣犺繖鏍疯繍琛岀殑銆 鍒板簳濡備綍杩愯鐨? 鎴戝啓浜嗘暀绋嬩簡,閮芥槸鎴浘鍜岃灏界殑瑙i噴,浣犵湅涓鐪,灏辩煡閬撲簡: python鍒濈骇鏁欑▼:鍏ラ棬璇﹁В 閲岄潰鍖呮嫭: 4.1. 濡備綍鍦╓indows鐜涓嬪紑鍙慞ython 4.1.1. Python鐨勬渶鍘熷鐨勫紑鍙戞柟寮忔槸浠涔堟牱鐨 4.1.1.1. 鎵句釜鏂囨湰缂栬緫鍣,鏂板缓涓.py鏂囦欢,鍐涓奝ython浠g爜 4.1...
  • 浣跨敤python缂栧啓鍑芥暟,瀹炵幇浠ヤ笅鍔熻兘?
    绛旓細杩欎笉灏辨槸閬嶅巻鍚= =锛屾庝箞鍙堟槸浣 def fun(s):ret = ''for i,elem in enumerate(s):ret += elem + ('*' if i % 2 == 0 and ord(elem) % 2 != 0 else '')return ret浣跨敤 s = 'ABCDEFG12345'print fun(s)
  • 娲诲娲荤敤Python03:缇ゆ垚鍛橀殢鏈轰袱浜洪厤瀵
    绛旓細鎶婂叏浣撶兢鎴愬憳鏀惧湪涓涓泦鍚堥噷闈,鐒跺悗闅忔満鐨勪粠杩欎釜闆嗗悎涓寫鍑轰袱涓厓绱,浣滀负涓瀵规垬鍙,鐒跺悗鎶婅繖淇╁摜浠粠闆嗗悎涓垹闄,鍓╀笅鐨勬垚鍛樼粍鎴愪簡鏂扮殑闆嗗悎,鍐嶅鏂扮殑闆嗗悎閲嶅涓婇潰鐨勬搷浣,涓鐩村埌鏂扮殑闆嗗悎涓虹┖,绋嬪簭缁撴潫 鍦Python涓彲浠ョ敤list鎴栬卻et鏉ュ疄鐜 set鍜宭ist鐨勫尯鍒涓: set鏄棤搴忕殑,涓嶅彲閲嶅鐨 list鏄湁搴忕殑,鍙互閲嶅鐨 ...
  • 本站交流只代表网友个人观点,与本站立场无关
    欢迎反馈与建议,请联系电邮
    2024© 车视网