这个Python单行代码是什么意思?
s=p=1;exec"if s%p*s%~-~p:print`p`+','+`p+2`\ns*=p*p;p+=2\n"*999
3 个回答
3
这段代码是一个循环的过程。
s=p=1
,这是初始化的步骤。exec"f(...)"*999
和for i in range(999):f(...)
是一样的意思,都是重复执行函数999次。s%p
表示取余运算,也就是求余数。p*s
表示乘法运算,(x,y)
是二元操作。~-~
的解释可以在这里找到。\n
表示换行。\ns
表示换行,然后s
是声明的一部分,像是s*=p*p;
。p+=2
的意思是把p
的值加2,也可以写成p=p+2
。
希望其他人能补充更多信息。想进一步了解的话,这个代码的递归方程是什么呢?
7
它计算并打印出一对对的双生素数。
3,5
5,7
11,13
17,19
29,31
41,43
59,61
71,73
101,103
107,109
137,139
.....
真不错 :)
12
这里是基本想法的简单解释。
# p = 1; s = p
s=p=1
#exec"if s%p*s%~-~p:print`p`+','+`p+2`\ns*=p*p;p+=2\n"*999
for i in range(999):
# s%p = remainder of s/p
# ~p = 1s complement of p
if s%p*s%~-~p:
# `p` = repr(p)
print`p`+','+`p+2`
# s = s*p*p
s*=p*p
# p = p+2
p+=2