1. 程式人生 > >python求素數對(質數對)個數

python求素數對(質數對)個數

室友在看牛客網的程式設計題目時看到了這個題目,自己也做了做,寫的程式碼比別人要複雜許多,說明還存在很多問題,這裡放一下看到的不錯的兩種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)可以減少一半的次數。

這些程式看上去很簡單,但是有很多值得學習的地方。。。

覺得自己在程式的精簡度方面還有很多提升的空間。