python语言中关于素数的问题

来源:互联网 发布:软件开发与软件研发 编辑:程序博客网 时间:2024/06/05 00:52

质数(prime number)又称素数,有无限个。质数定义为在大于1的自然数中,除了1和它本身以外不再有其他因数的数称为质数
基本判断思路:
在一般领域,对正整数n,如果用2到 之间的所有整数去除,均无法整除,则n为质数。
质数大于等于2 不能被它本身和1以外的数整除
方法1

#求100一下的素数import datetimestart=datetime.datetime.now()#记录开始时间sum=0for i in range(2,101):    for j in range(2,i):        if i%j==0:            sum+=1    if (sum==0):        print(i)    sum=0end=datetime.datetime.now()#结束时间print(end-start)#方法2import datetimestart = datetime.datetime.now()#记录开始时间    # do somethingsum=0for i in range(2,101):    for j in range(2,i):        if i%j==0:            sum=1            break #采用了break的作用使得代码时间短    if (sum==0):        print(i,end=' ')    sum=0end = datetime.datetime.now()#记录结束时间print (end-start)#方法三#利用函数from math import sqrtdef is_prime(n):    if n == 1:        return False    for i in range(2, int(sqrt(n))+1):        if n % i == 0:            return False    return True
有关问题:#2百万一下的素数之和from math import sqrtdef is_prime(n):    if n == 1:        return False    for i in range(2, int(sqrt(n))+1):        if n % i == 0:            return False    return Truesum1=0for i in range(1,2000001):    if(is_prime(i)):        sum1+=iprint(sum1)

关于求一个正整数的质因数:

#求一个整数的质因数def factor(n):    m=n    a=[]    i=1#从1开始    while(i<m+1):        if(m%i==0):            m//=i            a.append(i)#加入列表里            i=2#从2循环开始        else:            i+=1    return aprint(factor(600851475143))'''#方法二,递归方法def factor(n):    m=n    global a    for i in range(2,m+1):        if(m%i==0):            a.append(i)            return factor(m//i)a=[]factor(5)print(a)

在学习中最大的收获,不仅仅是学到了编程的思想,还是有数学的知识。

0 0
原创粉丝点击