首页 > 编程知识 正文

python定义函数判断质数,python如何用函数判断素数

时间:2023-05-04 15:04:47 阅读:247399 作者:2218

本文,用python3写一个判别素数的自定义函数。

工具/材料

python3.6

math模块

time模块

操作方法

01

根据素数的定义,写一个粗略的自定义函数:

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的整数。')

02

先检验一下这个函数是否靠谱:

for i in range(36):

print(i,'    ',p(i))

看来还是挺靠谱的。

03

我们查看一下,用这个函数检测8000以内的所有素数,需要用多长时间:

import time

a=time.clock()

for i in range(2,8000):

p(i)

b=time.clock()

print('用时%s秒。'%(b-a))

04

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

05

用这个函数判断2^100+45是否素数,用时长达36秒:

import time

a=time.clock()

i=2**100+45

p(i)

b=time.clock()

print('用时%s秒。'%(b-a))

06

我们来写出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))

07

再检验一下:

print((2**100+45)%178691549)

运行结果等于0,说明2^100+45确实不是素数。

好了,以上就是大致内容了,(END)

如果某个素数很大,用本文的方法进行判断,将会很费时。所以,本文给出的自定义函数还需要改进。

给定数字n^2,如果用不大于n的素数进行检验,无疑可以节省大量时间。然而又有另一个问题,那就是我们需要提前给定小于n的所有素数。而小于n的所有素数的检测,也会比较耗时。大家比较一下,应该怎么写代码比较好。

声明:该文观点仅代表作者本人,天晴资讯网系信息发布平台,仅提供信息存储空间服务。

监控视图 Kafka消息队列 UKafkaPython+Pygamejavascript中有哪些类型

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。