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__':'这一语句这可能只是一种偶然现象尤其是在外部导入时可能会更优。对于第二个方案而言在循环次数较多的情况下可以通过计算\sqrt{N}来减少一半左右的运算量从而提高效率。
这些程序看上去很简单,但是有很多值得学习的地方。。。
觉得自己在程序的精简度方面还有很多提升的空间。
全部评论 (0)
还没有任何评论哟~
