文章

119

粉丝

68

获赞

92

访问

20.2k

头像
连续合数段 题解:存储起来,用加一判断
P1493 北京航空航天大学2019年机试题
发布于2025年2月8日 11:18
阅读数 97

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

bool isprime(int x) {
    if (x < 2) return false; // 1 不是质数
    for (int i = 2; i * i <= x; i++) {
        if (x % i == 0) {
            return false;
        }
    }
    return true;
}

int main() {
    int x, y;
    while (cin >> x >> y) {

        vector<int> composites; // 存储合数的位置
        for (int i = x; i <= y; i++) {
            if (!isprime(i)) {
                composites.push_back(i);
            }
        }

        // 寻找最长连续合数序列
        int maxLen = 1, currentLen = 1;
        int start = 0, end = 0;
        for (int i = 1; i < composites.size(); i++) {
            if (composites[i] == composites[i - 1] + 1) {
                currentLen++;
                if (currentLen > maxLen) {
                    maxLen = currentLen;
                    end = i;
                }
            } else {
                currentLen = 1;
            }
        }

  ...
登录查看完整内容


登录后发布评论

暂无评论,来抢沙发