题解 | 几乎是质数

几乎是质数

https://www.nowcoder.com/practice/bbcb0e0f5aad46f4920ee85c3ed5d34b

素数筛获取全部素数,再统计每个数的素因子数

#include <iostream>
#include<vector>
using namespace std;

int main() {
    int n;
    cin>>n;
    if(n<6){
        cout<<0<<endl;
        return 0;
    }
    vector<bool>is_prime(n+1,true);
    is_prime[0]=is_prime[1]=false;
    for(int i=2;i*i<=n;i++){
        if(is_prime[i]){
            for(int j=i*i;j<=n;j+=i){
                is_prime[j]=false;
            }
        }
    }
    vector<int>prime;
    for(int i=2;i<=n;i++){
        if(is_prime[i])prime.push_back(i);
    }
    vector<int>factor_cnt(n+1,0);
    for(int p:prime){
        for(int num=p;num<=n;num+=p){
            factor_cnt[num]++;
        }
    }
    int cnt=0;
    for(int i=6;i<=n;i++){
        if(factor_cnt[i]==2)cnt++;
    }
    cout<<cnt<<endl;
    return 0;
}

全部评论

相关推荐

热爱生活的咸鱼在吃瓜:个人建议,项目太简单了,实习干的活都是测试的活,反正又没人知道你实习干啥了,你懂吧
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务