质数(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)
在学习中最大的收获,不仅仅是学到了编程的思想,还是有数学的知识。