哇?求助
查看原帖
哇?求助
665493
Coder12823楼主2024/10/4 17:45
#include <cstdio>
#include <cmath>
using namespace std;

bool not_prime[1000005];

void init(int n) {
    not_prime[0] = not_prime[1] = true;
    for (int i = 2; i <= n; i++) {
        for (int j = 2 * i; j <= n; j += i) {
            not_prime[j] = true;
        }
    }
    // for (int i = 0; i <= n; i++) {
    //     printf("%d ", not_prime[i]);
    // }
}

int f(int n) {
    for (int i = int(floor(sqrt(n))); i >= 2; i--) {
        if (not_prime[i] == false) {
            return i;
        }
    }
    return -1;
}

int main() {
    int n, B;
    scanf("%d%d", &n, &B);
    init(n);
    int cnt = 0;
    for (int i = 1; i <= n; i++) {
        int res = f(i);
        if (res <= B && res >= 2) {
            // printf("%d %d\n", i, res);
            cnt++;
        }
    }
    printf("%d", cnt);

    return 0;
}
2024/10/4 17:45
加载中...