top1编程
← 返回题目
题解

【入门】求出N以内的全部素数,并按每行五个数显示

1 条题解

  • 0
    @ 2026-7-30 1:06:57

    解题思路

    从 2 开始检查到 n 的每一个数。 如果一个数没有除了 1 和它本身以外的约数,它就是素数。 每找到 5 个素数就换一行输出。

    参考代码

    #include <iostream>
    using namespace std;
    
    int main() {
        int n;
        cin >> n; // 读入范围的上限
    
        int cnt = 0; // 记录已经输出了多少个素数
        for (int i = 2; i <= n; i++) {
            bool ok = true; // 假设 i 是素数
    
            // 检查 i 是否能被 2 到 sqrt(i) 之间的数整除
            for (int j = 2; j * j <= i; j++) {
                if (i % j == 0) {
                    ok = false; // 找到约数,说明 i 不是素数
                    break;
                }
            }
    
            if (ok) {
                cout << i << " "; // 输出当前素数
                cnt++;
                if (cnt % 5 == 0) cout << endl; // 每 5 个数换行
            }
        }
        return 0;
    }
    

    复杂度分析

    外层枚举 n 个数,每个数最多检查到它的平方根,空间复杂度为 O(1)。

    • 1