Home => ProblemSet => 2.8-18:数组-筛法求素数
Problem1663--2.8-18:数组-筛法求素数

1663: 2.8-18:数组-筛法求素数

Time Limit: 1 Sec  Memory Limit: 128 MB  Submit: 0  Solved: 2
[ Submit ] [ Status ] [ Creator: ][ 参考程序 ]

Description

筛法求素数,指的是每次将一个素数的所有的倍数去掉,如果当前的数没有被比它小的数去掉过,那么当前的数就是素数。
比如1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
1不是素数。不用管。
2是素数,那么2的所有的倍数要被去掉。
3是素数,那么3的所有的倍数要被去掉。
4 被去掉了。不用管。
。。。
这样做下去我们就可以筛选出所有的指定范围内的素数了。
你的任务是求小于等于n的素数的个数count。
做完这道题后感兴趣的同学可以将n/count 的值打印输出来看看。

Input

第一行输入一个整数T,表示询问的个数
接下来T行每行输入一个整数n.

Output

对于每个询问n输出小于等于n的的素数的个数。

Sample Input Copy

2
10
1000000

Sample Output Copy

4
78498

HINT



1 <= T <= 108
1 <= n <= 106
要注意n和T的范围哦,算算自己的程序能不能在1秒内算出结果,普通计算机一秒钟大约是107到108的计算量

Source/Category