问题标题: 酷町堂:6605 酷町猫玩数学游戏

0
0
胡景波
胡景波
中级光能
中级光能

6605   酷町猫玩数学游戏

经验值:1600 时间限制:2000毫秒

题目描述 Description

给定N,求1,2,…,N中素数的个数

输入描述 Input Description

一行:一个整数N

输出描述 Output Description

一行:一个整数表示素数的个数

样例输入 Sample Input

10

样例输出 Sample Output

4

数据范围及提示 Data Size & Hint

对于40% 的数据,1≤N≤106
对于 80% 的数据,1≤N≤107
对于 100% 的数据1≤N≤108

 

#include<iostream>
#include<cmath>
#include<cstdio>
using namespace std;
int n,ans,q;
bool b[100000005];
int main(){
    scanf("%d",&n);
    b[1]=true;
    for(int i=2;i<=n;i++){
        if(b[i]==false){
            ans++;
            for(int j=i*2;j<=n;j+=i)
                b[j]=true;
        }
    }
    cout<<ans;
    return 0;
}


0
康曦
康曦
中级光能
中级光能

你这数组开大了吧

康曦在2021-11-23 23:01:21追加了内容

而且要用埃氏筛,你这肯定不行

0
薛乘志
薛乘志
初级启示者
初级启示者

我记得埃氏筛好像不是在推的过程中就能直接判断的吧...

在埃氏筛完了以后再循环找质数试试?

0
杨锦添
杨锦添
新手守护
新手守护

改成sqrt(n)

然后外面弄个for循环看看有多少个false的,输出

0
我要回答