N=50000
a=[]
end =N // 2
for num in range(2,end+1):
for i in range(2,num):
if (num % i) == 0:
break
else:
a.append(num)
i=1
j=len(a)-1
total=len(a)
while(i<=j):
n = a[i]*a[j]
if n<= N:
total=total+j-i+1
i=i+1
else:
j=j-1
print(total)
最小的素数为2,所以先求出N/2以内的素数列表,再从列表两边开始向中间进行判断。