python 1013 数素数 (20分)
PAT (Basic Level) Practice(中文) 1013 数素数 (20分)令 Pi 表示第 iii 个素数。现任给两个正整数 ht:0.950078em;vertical-align:-0.13597em;" class="strut bottom">M≤N≤10 4,请输出 PM 到 PN 的所有素数。
输入格式:
输入在一行中给出 MMM 和 NNN,其间以空格分隔。
输出格式:
输出从 PN 到 PM 的所有素数,每 10 个数字占 1 行,其间以空格分隔,但行末不得有多余空格。
输入样例:
5 27
输出样例:
11 13 17 19 23 29 31 37 41 43
47 53 59 61 67 71 73 79 83 89
97 101 103
实现代码:
import math
b,m=map(int,input().split())
x=float(m)
if x>6:
n=x*math.log(x)+x*math.log(math.log(x))
n=int(n)
else:
n=15
t=[1]*(n+2)
a=[]
p,s=2,0
while p<=n:
a.append(p)
for i in range(2*p,n+1,p):
t[i]=0
while True:
p+=1
if t[p]==1:
break
for i in range(b-1,m-1):
print(a[i],end='')
s+=1
if s%10==0:
print()
else:
print(end=' ')
print(a[m-1],end='')
总结:
关于找素数的方式参考 1007 素数对猜想 (20分)
这道题如果去构建 104 的素数组会超时,所以要判断范围,因此就有了,下面的代码,用来判断第 m个素数的位置,之久就是判断素数了
x=float(m)
if x>6:
n=x*math.log(x)+x*math.log(math.log(x))
n=int(n)
else:
n=15
PS: day12 神奇的数学公式,我也不知道咋证明的,有兴趣可以器查查,我懒了…