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(i<m+1):
        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)

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值