python求素數對(質數對)個數
阿新 • • 發佈:2019-01-11
室友在看牛客網的程式設計題目時看到了這個題目,自己也做了做,寫的程式碼比別人要複雜許多,說明還存在很多問題,這裡放一下看到的不錯的兩種python程式碼,可以看一下:
首先是題目:
第一個程式碼:
import math def isOk(n): if n & 1 == 0: return False i = 3 n_sqrt = math.sqrt(n) while i <= n_sqrt: if n % i == 0: return False i += 2 return True if __name__ == '__main__': N = int(input()) ans = 0 for i in range(1, N//2+1, 2): if isOk(i) and isOk(N-i): ##false 和 true ans += 1 print(ans)
這個程式碼是用false和true來判斷if的條件的。
第二個程式碼:
def issushu(n): flag=1 if n<2: flag=0 else: for i in range(2,n): ## if n%i==0: flag=0 break else: flag=1 return flag a=int(input()) count=0 for i in range(2,int(a/2)+1): if issushu(i)==1 and issushu(a-i)==1: count+=1 print(count)
其實這兩種意思是一模一樣的,不過判斷方法一個是用1一個是用true,然後第一種方法裡竟然還用到了if __name__ == '__main__': 在外部import的時候可能更好一點。第二種方法在for迴圈次數要多,可以用sqrt(N)可以減少一半的次數。
這些程式看上去很簡單,但是有很多值得學習的地方。。。
覺得自己在程式的精簡度方面還有很多提升的空間。