C.这是一道告诉了你答案的题
提交数: 502, 通过率: 74.1%, 平均分: 74.94
题目描述:
由于这题是“一道告诉了你答案的题”,所以题面很清水。给出一个数n,求出1-n中有多少个质数。
初步思想:对于1-n批量判素数,由当前已知素数筛去后面的是该素数倍数的合数,以此剩下质数。代码大概长这样:
但是这样的算法效率不高。因为一个合数会被不同质数筛很多次。那么怎么办呢?让一个合数只被它最小的质因数筛掉就可以了。我们的原算法是枚举质数z[j]和它的倍数i,只要让z[j]不大于i中所有质数即可。
输入格式:
一个正整数n。
输出格式:
1~n中的质数个数。
样例输入:
样例输入1: 10 样例输入2: 1
样例输出:
样例输出1: 4 样例输出2: 0
提示:
对于30%的数据 1<=n<=100,000
对于100%的数据 1<=n<=10,000,000
(时限是450ms 如果你写最普通的质数判断也有30分。如果你照着原代码打大概有50分及以上。出题人是不是超善良XD)
本题是线性筛法的模板题
感谢叶懿芯
时间限制: 450ms空间限制: 256MB
来源: 2018新生欢乐赛div1