新手·ing 发表于 2017-9-29 19:56:00

Python:每日一题 效率题

本帖最后由 新手·ing 于 2017-9-29 19:59 编辑

啊哈哈哈哈,十月一来了,楼楼终于可以回归几天了~

今日题目:判断一个数是否为质数。但是!!!这是一道效率题,效率越高越好,方法多得是,只不过效率有差别罢了。

题目很简单,准备围观大佬~

基本解法:
**** Hidden Message *****
itertools:
**** Hidden Message *****
math:
**** Hidden Message *****

jerryxjr1220 发表于 2017-9-29 21:57:54

本帖最后由 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:}

wyh2006 发表于 2017-9-30 10:34:01

from math import factorial

def prime(x):
    return factorial(x-1)%x == x-1

solomonxian 发表于 2017-9-30 19:20:57

我只知道可以先用费马小定理去掉大部分合数,
后面怎样更快就不清楚了
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

新手·ing 发表于 2017-9-29 22:04:04

jerryxjr1220 发表于 2017-9-29 21:57
基本上10**15以内都是毫秒级别的

{:10_245:}

zhll912 发表于 2017-9-30 09:09:09

你们都是大礼

SixPy 发表于 2017-9-30 09:40:04

你们都是大礻申

suloman 发表于 2017-9-30 12:53:22

jerryxjr1220 发表于 2017-9-29 21:57
基本上10**15以内都是毫秒级别的

求解释。。 写一行看不太懂

jerryxjr1220 发表于 2017-9-30 14:21:27

suloman 发表于 2017-9-30 12:53
求解释。。 写一行看不太懂

http://bbs.fishc.com/forum.php?mod=viewthread&tid=88904&mobile=2

a63521557 发表于 2017-9-30 15:30:05

了解一下

shihuijun 发表于 2017-9-30 18:49:22

大神的年圻

AsnFuyy 发表于 2017-9-30 19:51:37

1

过去吧 发表于 2017-9-30 20:17:27

学习

wujifu333 发表于 2017-9-30 21:23:48

学习

stars_ice 发表于 2017-10-1 10:25:55


每天开心学习python

lemon1953 发表于 2017-10-1 11:21:13

看看

一刹那 发表于 2017-10-2 17:45:30

先看看!

淡淡的幸福 发表于 2017-10-3 09:42:42

楼主辛苦

Winger 发表于 2017-10-3 10:53:30

学习

zzystar 发表于 2017-10-3 13:20:26

萌新求解中
页: [1] 2 3
查看完整版本: Python:每日一题 效率题