CSP-J备考冲刺必刷题(C++) | AcWing 5367 不合群数

本文分享的必刷题目是从蓝桥云课洛谷AcWing等知名刷题平台精心挑选而来,并结合各平台提供的算法标签和难度等级进行了系统分类。题目涵盖了从基础到进阶的多种算法和数据结构,旨在为不同阶段的编程学习者提供一条清晰、平稳的学习提升路径。

欢迎大家订阅我的专栏:算法题解:C++与Python实现!

附上汇总贴:算法竞赛备考冲刺必刷题(C++) | 汇总


【题目来源】

AcWing:5367. 不合群数 - AcWing题库

【题目描述】

如果一个正整数无法被 [ 2 , a ] [2,a] [2,a] 范围内的任何整数整除,则称其为不合群数。

请你计算并输出 [ 2 , b ] [2,b] [2,b] 范围内的最大不合群数。

提示: 10 10 10 亿内的最大质数是 999999937 999999937 999999937,且相邻质数之间的差值均不超过 300 300 300

【输入】

共一行,包含两个整数 a , b a,b a,b

【输出】

一个整数,表示 [ 2 , b ] [2,b] [2,b] 范围内的最大不合群数。

如果 [ 2 , b ] [2,b] [2,b] 范围内不存在不合群数,则输出 -1

【输入样例】

3 6

【输出样例】

5

【算法标签】

《Acwing 5367 不合群数》 #枚举# #质数# #试除法#

【代码详解】

#include 
using namespace std;

int a, b; // 定义整数 a 和 b
bool ans; // ans 用于标记是否找到满足条件的数

int main()
{
    cin >> a >> b; // 输入整数 a 和 b
    for (int i = b; i > a; i--) { // 从 b 开始倒序遍历到 a+1
        ans = true; // 假设当前数 i 是满足条件的数
        for (int j = 2; j <= a && j * j <= i; j++) { // 遍历 2 到 min(a, sqrt(i)) 的所有整数
            if (i % j == 0) { // 如果 i 能被 j 整除
                ans = false; // 标记当前数 i 不满足条件
                break; // 跳出内层循环
            }
        }
        if (ans) { // 如果当前数 i 满足条件
            cout << i << endl; // 输出 i
            return 0; // 程序结束
        }
    }
    cout << -1 << endl; // 如果没有找到满足条件的数,输出 -1
    return 0; // 程序结束
}

【运行结果】

3 6
5

你可能感兴趣的:(c++,算法,开发语言)