python语言中关于素数的问题

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

#求100一下的素数
import datetime
start=datetime.datetime.now()#记录开始时间
sum=0
for i in range(2,101):
    for j in range(2,i):
        if i%j==0:
            sum+=1
    if (sum==0):
        print(i)
    sum=0
end=datetime.datetime.now()#结束时间
print(end-start)

#方法2
import datetime
start = datetime.datetime.now()#记录开始时间
    # do something
sum=0
for 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=0
end = datetime.datetime.now()#记录结束时间
print (end-start)


#方法三
#利用函数
from math import sqrt
def 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 sqrt
def 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
sum1=0
for i in range(1,2000001):
    if(is_prime(i)):
        sum1+=i
print(sum1)

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

#求一个整数的质因数
def factor(n):
    m=n
    a=[]
    i=1#从1开始
    while(i1):
        if(m%i==0):
            m//=i
            a.append(i)#加入列表里
            i=2#从2循环开始
        else:
            i+=1
    return a
print(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)

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

你可能感兴趣的:([Python])