问题标题: 酷町堂:3890 开心数

1
1
已解决
万韧山
万韧山
初级天翼
初级天翼

题目链接: 酷町堂:3890

#include<iostream>
#include<cstdio>
#include<cmath>
#include<algorithm>
using namespace std;
bool f(int n){
    if(n<=1) return 0;
    for(int i=2;i<=sqrt(n);i++){
        if(n%i==0) return 0;
    }
    return 1;
}
bool kxs(int n){
    int cnt=0;
    for(int i=2;i<=sqrt(n);i++){
        if(n%i==0&&f(i)) cnt++;
    }
    if(cnt==4) return 1;
    return 0;
}
int main()
{
    int n,cnt=0;
    cin>>n;
    for(int i=1;i<=n;i++){
        if(kxs(i)) cnt++;
    }
    cout<<cnt;
    return 0;
}

样例不对。。。

题目样例49

我的44.。。


0
1
王擎宇
王擎宇
中级守护
中级守护

这题用埃氏筛做你这样做太复杂了,还容易错。

1
刘昊宇
刘昊宇
中级守护
中级守护

埃氏筛

基本模板

for(long long i=2;i<=a;i++){ if(b[i]==0){ for(long long j=i*2;j<=a;j+=i){ b[j]++; } } }

求采纳

刘昊宇在2022-07-20 10:13:11追加了内容

你应该学过

0
宋灏
宋灏
初级光能
初级光能

用埃氏筛啊,

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

方法:埃氏筛

求采纳

0
0
崔子周
崔子周
高级天翼
高级天翼

    循环(定义 i=2;i<=a;i++){

        如果(b[i]==0){

            循环(定义 j=i*2;j<=a;j+=i){

                b[j]++;

            }

        }

    }

    循环(定义 i=2;i<=a;i++){

        如果(b[i]==4){

            计数++;

        }

    }

    输出<<计数;

输入定义自己想,百分百AC

我要回答