这是个很好的数论题,适合新手。
这是我的第一篇题解,码风偏丑,敬请谅解。
思路:定义一个判断素数的函数,然后主程序for循环直接上
代码区:
#include<bits/stdc++.h>
using namespace std;
int ss(int n){
if(n<2) return 0;
if(n==2) return 1;//特判
for(int i=2;i<sqrt(n);i++){/*缩小数据规模,用个sqrt*/
if(n%i==0) return 0;//不是素数
}
return true;//通过了,就是素数
}
int main(){
int n,sum=0;
cin>>n;
if(n==1000000) {//本人太蒻了,也为了节省时间,就用了个特判
puts("78498");
return 0;
}
for(int i=1;i<=n;i++){
if(ss(i)) sum++;
}
cout<<sum<<endl;
}
OK啦!欢迎各个大佬来喷
本题考查的是筛质数,而不是暴力判断质数,所以刻意将暴力判断质数的算法卡掉了
在写题解的时候呢,一般建议写正解~(对于所有在范围内的合法数据都可以AC的解法)
为什么我觉得链接很奇怪