问题标题: 酷町堂:3890

0
1
已解决
徐润扬
徐润扬
高级守护
高级守护

#include<iostream>
#include<cmath>
using namespace std;
int a[1000010];
int main()
{
    int n,maxn=0;

    cin>>n;
    for(int i=2;i<=n;i++)
    {
        int cnt=0;
        if(a[i]==0)
        {
            for(int j=i*2;j<=n;j+=i)
            {
                cnt++;  
            }
            
           }
        if(cnt==4)
            maxn++;         
    }
    cout<<maxn-1<<endl;
    return 0;
}

埃式筛

为什么0分!

徐润扬在2020-03-21 20:29:12追加了内容

在线等,求大佬们回答


1
已采纳
包涵宇
包涵宇
中级天翼
中级天翼

你好!!!

你的思路好像有问题。。。

埃氏筛是先要全部求出来

所以:

for(int i=2;i<=n;i++)
    {
        int cnt=0;
        if(a[i]==0)
        {
            for(int j=i*2;j<=n;j+=i)
            {
                cnt++;  
            }

           }
        if(cnt==4)
            maxn++;         
    }
    cout<<maxn-1<<endl;

应该为:

for(long long i=2;i<=n;i++)
        if(b[i]==0)
            for(long long j=i*2;j<=n;j+=i)
                b[j]++;
    for(long long i=2;i<=n;i++)
        if(b[i]==4)
            maxn++;
    cout<<maxn;

AC!!!

1
0
0
0
徐润扬
徐润扬
高级守护
高级守护

去核心代码

 

徐润扬在2020-03-22 09:48:50追加了内容

求核心代码

我要回答