數學領域著名的“哥德巴赫猜想”的大致意思是:任何一個大于2的偶數總能表示為兩個素數之和,比如:24=5+19,其中5和19都是素數,本實驗的任務是設計一個程式,驗證20億以內的偶數都可以分解成兩個素數之和,
輸入格式:
輸入在一行中給出一個(2, 2 000 000 000]范圍內的偶數N,
輸出格式:
在一行中按照格式“N = p + q”輸出N的素數分解,其中p ≤ q均為素數,又因為這樣的分解不唯一(例如24還可以分解為7+17),要求必須輸出所有解中p最小的解,
代碼如下:我的代碼
#!/usr/bin/python # -*- coding: utf-8 -*- s = int(input()) s1 =list() for i in range(2,s): v = True for j in range(2,int(i ** 0.5)): if i%j == 0: v = False if v: s1.append(i) for i in range(0,len(s1)): if s-s1[i] in s1: print("{:d} = {:d} + {:d}".format(s,s1[i],s-s1[i])) break
分析一下我第一次寫的,
1、和我之前的風格一樣,創建一個空串列,把篩選的素數都放進去,
2、用輸入的數回圈減去素數,如果結果在素數串列里則進行輸出,
但是測驗小數字可以,進行大數字測驗時就超時了,那個篩選素數可是很浪費時間的,
參考CSDN https://tuenity.blog.csdn.net/article/details/102607545
第二次代碼如下:
#!/usr/bin/python # -*- coding: utf-8 -*- n = int(input()) def isPrime(n): if n <= 1: return False for i in range(2,(int(n**0.5)+1)): if n%i == 0: return False return True for x in range(2,n): y = n - x if isPrime(x) == 1 and isPrime(y) == 1: print("{:d} = {:d} + {:d}".format(n,x,y)) break
分析一下這個代碼,
1、定義一個函式,用來判斷輸入的數字是否為素數,
2、然后對兩個進行加法運算的數做素數判斷,
蒽,這樣運行起來確實比我的省時省力,
但是截止到這道題,那個課程安排還沒有進行到函式,o(∩_∩)o 哈哈
讀書和健身總有一個在路上
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/156490.html
標籤:Python
上一篇:Python轉義字符及其含義
