求指数
def is_prime(number):if number > 1:
if number == 2:
return True
if number % 2 == 0:
return False
for current in range(3, int(math.sqrt(number) + 1), 2):
if number % current == 0:
return False
return True
return False
以上的代码的都能看懂,不理解算法,for current in range(3, int(math.sqrt(number) + 1), 2):,为什么要从3到n的平方根+1,步长为2,这样子来除,
例如:100的平方根是10,只除3到10之间数,其它的数0为什么不用除?
我的思路是:先判断 n 是否为二,是二就返回True, 不是二就 n 除 1 和它本身,如果 n 的余数不为0,返回False,如果 n 的余数为 0 ,就从2到n-1挨个数。(不知道我这种思路,是否有误,没有实践过)
看代码可以看出这个是求素数的函数,为什么要除到开平方+1 涉及到算法问题,看下下面这篇文章应该就可以大致理解:
https://blog.csdn.net/lzxlovegyd/article/details/71340090
里面也有举例子助于你的理解~
首先去掉了偶数,剩下就是在奇数里面判断,所以从3开始跨2去掉除数为偶数的可能,然后开平方是因为如果开平方+1里面的数能除尽,那么平方外的数也能除尽,这样可以加快速度,比如一个大于10的数乘一个数能得到100,那么这个数一定在根号100+1以内,所以只需要判断根号内的数
页:
[1]