Python 如何计算效率以及对的基本理解
a.为什么不为未进入Python 如何计算效率以及对的基本理解,python,Python,a.为什么不为未进入if条件的范围内的每m打印is prime def trial_division(N): up= round(N**0.5+0.5) for m in range (2,up+1): if N%m==0: print (m,"is the smallest divisor of",N) break else: print (N, "is prime") b.如何计算其效
if
条件的范围内的每m打印is prime
def trial_division(N):
up= round(N**0.5+0.5)
for m in range (2,up+1):
if N%m==0:
print (m,"is the smallest divisor of",N)
break
else:
print (N, "is prime")
b.如何计算其效率?如果
N
长度为N位,为什么它不是Nn\2则for
循环的else
子句仅在for
循环结束后执行,除非使用break
语句提前中止循环
因此程序按设计工作:如果for
循环正常完成,这意味着2和sqrt(N)
之间没有除数,因此N
是素数
请继续观看。由于range方法接受整数,因此强制浮点为整数怎么样
def trial_division(N):
up= round(N**0.5+0.5)
for m in range(2,int(up+1)):
if m%2 == 0:
print (m, "is the smallest divisor of",N)
break
else:
print (N, 'is prime')
trial_division(4)
位是如何进入的?该算法有N^0.5个阶段,因此最多需要N^0.5个分段,但如果N是N位长,那么N^0.5是以N为单位的吗?@user777:从缩进中可以清楚地看出。
else
显然与语句的处于相同的缩进级别。@user777:是。这是Python的一个基本原则。@user777:不完全是。如果删除整个else
子句(包括其中包含的print
),那么如果N
为prime,当然不会得到任何输出。如果只删除行else:
则会出现缩进错误
,因为打印
缩进不正确。如果您删除else
并退出print
,则消息N is prime
将始终被打印…@user777:Yes。这就是我在回答的第一句话中写的。你看到了吗?@user77777:是的,使用while
,try
,使用条件(a=1,如果b==2,否则0
)…你可能想阅读python,因为它的.0结尾类似于2.0,是一个浮点,它返回什么,但范围只需要整数。在python 3中不需要;这个问题显然是关于Python3的(请检查print()
函数。在Python2中,您将使用此代码获得元组表示)。