Python:每日一题 效率题
本帖最后由 新手·ing 于 2017-9-29 19:59 编辑啊哈哈哈哈,十月一来了,楼楼终于可以回归几天了~
今日题目:判断一个数是否为质数。但是!!!这是一道效率题,效率越高越好,方法多得是,只不过效率有差别罢了。
题目很简单,准备围观大佬~
基本解法:
**** Hidden Message *****
itertools:
**** Hidden Message *****
math:
**** Hidden Message ***** 本帖最后由 jerryxjr1220 于 2017-9-29 22:00 编辑
is_prime = lambda n: True if n in {2,3,5,7,11,13,17,19,23,29,31,37,41,43,47,53,59,61,67} else all(False for p in {2,3,5,7,11,13,17,19,23,29,31,37,41,43,47,53,59,61,67} if pow(p,n-1,n) != 1)
基本上10**15以内都是毫秒级别的{:10_256:} from math import factorial
def prime(x):
return factorial(x-1)%x == x-1 我只知道可以先用费马小定理去掉大部分合数,
后面怎样更快就不清楚了
def fun(n):
if n == 2:
return True
elif n > 2 and pow(2, n-1, n)==1:
for i in range(2, int(n**0.5)+1):
if n % i :
return False
else:
return True
else:
return False jerryxjr1220 发表于 2017-9-29 21:57
基本上10**15以内都是毫秒级别的
{:10_245:} 你们都是大礼 你们都是大礻申 jerryxjr1220 发表于 2017-9-29 21:57
基本上10**15以内都是毫秒级别的
求解释。。 写一行看不太懂 suloman 发表于 2017-9-30 12:53
求解释。。 写一行看不太懂
http://bbs.fishc.com/forum.php?mod=viewthread&tid=88904&mobile=2 了解一下 大神的年圻 1 学习
学习
每天开心学习python 看看 先看看! 楼主辛苦 学习 萌新求解中