室友在看牛客网的编程题目时看到了这个题目,自己也做了做,写的代码比别人要复杂许多,说明还存在很多问题,这里放一下看到的不错的两种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)可以减少一半的次数。
这些程序看上去很简单,但是有很多值得学习的地方。。。
觉得自己在程序的精简度方面还有很多提升的空间。