1、素数的判断
时间复杂度O(sqr(num))
## 素数判断
## 时间复杂度O(sqr(n))
def is_primes(num):
if num<=1:
return False
i=2
while i*i<=num:
if num%i==0:
return False
i+=1
return True
num=int(input())
print(is_primes(num))
2、素数表的获取
## 素数表的获取
## 素数筛法
## 存放素数
primes=[]
## 是否时素数,用于线性筛
st=[True]*999999
## 计数
cnt=0
## num内的素数
def get_primes(num):
global primes,st,cnt
if num<=1:
return primes
for i in range(2,num+1):
if st[i]:
primes.append(i)
cnt+=1
for j in range(i*i,num+1,i):
st[j]=False
return primes
num=int(input())
print(get_primes(num))
Eg、数素数
## PAT B1013
## 数素数
primes=[]
st=[True]*10001
def get_primes():
global primes,st
for i in range(2,10001):
if st[i]:
primes.append(i)
for j in range(i*i,10001,i):
st[j]=False
get_primes()
M,N=map(int,input().strip().split())
count=0
for i in range(M-1,N):
count+=1
print(primes[i],end=" ")
if count==10:
count=0
print()
def get_primes_2(M,N):
cnt=0
primes=[]
st=[True]*10001
for i in range(2,10001):
if st[i]:
cnt+=1
primes.append(i)
for j in range(i*i,10001,i):
st[j]=False
if cnt>=N:
break
return primes
M,N=map(int,input().strip().split())
primes=get_primes_2(M,N)
count=0
for i in range(M-1,N):
count+=1
print(primes[i],end=" ")
if count==10:
count=0
print()
3、质因子分解
## 不妨先把素数表打印出来
## 输入的num<=10000
N=10001
primes=[]
st=[True]*N
def get_primes():
global primes
for i in range(2,N):
if st[i]:
primes.append(i)
for j in range(i*i,N,i):
st[j]=False
get_primes()
from collections import defaultdict
num=int(input())
dic=defaultdict(int)
for i in primes:
if num%i==0:
dic[i]=0
while num%i==0:
dic[i]+=1
num//=i
if i>num:
break
for key,val in dic.items():
print(str(key)+"^"+str(val))