用python3判定素数(自己定义的函数)

作者:彼岸花开 | 创建时间: 2023-04-14
本文,用python3写一个判别素数的自定义函数。...
用python3判定素数(自己定义的函数)

操作方法

根据素数的定义,写一个粗略的自定义函数: def p(n): if str(n).isdigit() and n>1: for i in range(2,n-1): if n%i==0: return False return True else: print('变量有误,请输入大于1的整数。')

先检验一下这个函数是否靠谱: for i in range(36): print(i,'    ',p(i)) 看来还是挺靠谱的。

我们查看一下,用这个函数检测8000以内的所有素数,需要用多长时间: import time a=time.clock() for i in range(2,8000): p(i) b=time.clock() print('用时%s秒。'%(b-a))

前30000个素数的判别,用时为2秒多点。

用这个函数判断2^100+45是否素数,用时长达36秒: import time a=time.clock() i=2**100+45 p(i) b=time.clock() print('用时%s秒。'%(b-a))

我们来写出2^100+45最小的素因子,就得先修改自定义函数: def p(n): if str(n).isdigit() and n>1: for i in range(2,n-1): if n%i==0: print(i) return False return True else: print(n,'变量有误,请输入大于1的整数。') 然后开始检测: import time a=time.clock() i=2**100+45 print(p(i)) b=time.clock() print('用时%s秒。'%(b-a))

再检验一下: print((2**100+45)%178691549) 运行结果等于0,说明2^100+45确实不是素数。

温馨提示

如果某个素数很大,用本文的方法进行判断,将会很费时。所以,本文给出的自定义函数还需要改进。
给定数字n^2,如果用不大于n的素数进行检验,无疑可以节省大量时间。然而又有另一个问题,那就是我们需要提前给定小于n的所有素数。而小于n的所有素数的检测,也会比较耗时。大家比较一下,应该怎么写代码比较好。
点击展开全文

更多推荐