文章

5

粉丝

0

获赞

26

访问

1.1k

头像
质因数个数 求解:有没有大佬帮我看一下,为什么只有75通过率,超时了
P1156 清华大学上机题
发布于2025年3月9日 12:41
阅读数 326

#include <bits/stdc++.h>
using namespace std;
const int maxn = 1000005;
long long f[maxn];
//*******************素数筛选法********************
void func(int a) {
    for (int i = 2; i <= a; i++) {
        if (f[i] == 0) {
            for (int j = i * 2; j <= a; j += i) {
                f[j] = 1;//不是素数,标记1
            }
        }
    }
}
int main() {
    f[maxn] = { 0 };
    func(maxn);
    long long  n,cnt;
    while (scanf("%d", &n) != EOF) {
        cnt = 0;
        for (int i = 2; i < n; i++) {
            if (f[i] == 0 ) {
 &...

登录查看完整内容


登录后发布评论

1 条评论
快乐小土狗
2025年3月9日 20:37

这个的N的范围是10^9次方,所以一次for就会超时,所以你需要思考一下,所以其实你只需遍历到sqrt(N)就可以了,更大的只需要判断N是不是素数。

赞(3)