文章

119

粉丝

68

获赞

92

访问

20.1k

头像
发财数 题解:素数筛加搜索法
P1489 北京邮电大学2018年机试题
发布于2025年2月11日 11:54
阅读数 63

#include <bits/stdc++.h>
using namespace std;

int main() {
    // 筛法求素数
    vector<int> a(10001), b;
    for (int i = 2; i < 10001; i++) {
        if (a[i] == 0) {
            int l = 2;
            int k = i * l;
            while (k < 10001) {
                a[k] = 1;
                l++;
                k = i * l;
            }
        }
    }
    for (int i = 2; i < 10001; i++) {
        if (a[i] == 0) b.push_back(i);
    }

    // 生成质因数数量大于等于 8 的整数
    vector<int> c;
    for (int i = 2; i <= 900000; i++) {
        int temp = i; // 使用临时变量
        int count = 0;
        for (int j = 0; j < b.size(); j++) {
            if (b[j] * b[j] > temp) break; // 提前终止条件
            while (temp % b[j] == 0) {
                temp /= b[j];
                count++;
            }
            if (count >= 8) break; // 如果已经满足条件,提前退出
        }
        if (temp > 1) count++; // 如果 temp 仍大于 1,说明还有一个质因数
        if (count ...
登录查看完整内容


登录后发布评论

暂无评论,来抢沙发