top1编程
← 返回题目
题解

【基础】连续非素数的最长度

1 条题解

  • 0
    @ 2026-7-29 0:15:45
    #include <iostream>
    #include <vector>
    using namespace std;
    
    int main() {
        int n;
        cin >> n;
    
        vector<bool> is_prime(n + 1, true);
        is_prime[0] = is_prime[1] = false;
    
        // 埃氏筛法筛素数
        for (int i = 2; i * i <= n; ++i) {
            if (is_prime[i]) {
                for (int j = i * i; j <= n; j += i) {
                    is_prime[j] = false;
                }
            }
        }
    
        int max_len = 0;
        int current_len = 0;
    
        for (int i = 1; i <= n; ++i) {
            if (!is_prime[i]) {
                current_len++;
                max_len = max(max_len, current_len);
            } else {
                current_len = 0;
            }
        }
    
        cout << max_len << endl;
    
        return 0;
    }
    
    • 1