给定整数 n, 请问 n 以内有多少个素数?
输入
- 输入为一个整数 n
- 1≤n≤106
输出
- 输出一个整数表示 n 以内有多少个素数
样例 1
输入
1000000
输出
78498
#include<bits/stdc++.h>
using namespace std;
int Prime[(int)1e6+5];
void pre_prime(int x)
{
Prime[1]=1;
for(int i=2;i<=sqrt(x);i++)
{
if(Prime[i]==0)
for(int j=i*i;j<=x;j+=i)
Prime[j]=1;
}
}
int main()
{
int n;
while(cin>>n)
{
pre_prime(n);
int count=0;
for(int i=1;i<=n;i++)
if(Prime[i]==0)
count++;
cout<<count<<endl;
}
}
参考:
该博客介绍了一种计算1到n之间素数个数的方法,使用C++实现的预处理素数函数,通过埃拉托斯特尼筛法简化查找过程,适用于1到10^6范围内的整数查询。
https://blog.youkuaiyun.com/jinyj1/article/details/108989951?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522164536372916780271951535%2522%252C%2522scm%2522%253A%252220140713.130102334.pc%255Fall.%2522%257D&request_id=164536372916780271951535&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~all~first_rank_ecpm_v1~rank_v31_ecpm-3-108989951.pc_search_result_cache&utm_term=%E7%B4%A0%E6%95%B0%E7%AD%9B&spm=1018.2226.3001.4187
1935

被折叠的 条评论
为什么被折叠?



