Python 如何计算效率以及对的基本理解

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.如何计算其效

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.如何计算其效率?如果
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中,您将使用此代码获得元组表示)。