求调,用的是线性筛
def isprime(n,status_d):
anslist=[]
pr=1
for i in range(2,n+1):
if status_d[i]:
anslist.append(i)
for pj in anslist:
if i*pj>n:
break # i*pj 超范围,退出循环
if i%pj==0:
status_d[int(i * pj)]=False
break
else:
status_d[int(i * pj)]=False
return anslist
n=int(input())
status_d=[True]*(n+1)
status_d[0]=status_d[1]=False
anslist=isprime(n,status_d)
print(len(anslist))