蓝桥杯第十三届蓝桥杯大赛软件赛决赛CC++ 研究生组之选素数,蓝桥杯第十三届软件赛决赛CC++研究生组选素数挑战赛精彩回顾,蓝桥杯第十三届软件赛决赛CC++研究生组选素数挑战赛精彩回顾与解析

马肤

温馨提示:这篇文章已超过468天没有更新,请注意相关的内容是否还可用!

摘要:蓝桥杯第十三届软件赛决赛CC++研究生组选素数挑战赛精彩纷呈,选手们经过激烈角逐,展现了扎实的编程实力和算法水平。本次比赛中,选手们需要解决关于素数筛选的问题,考验了他们的逻辑思维和编程能力。比赛落下帷幕,留下无数精彩瞬间和值得回味的学习经验。

#include <iostream>

蓝桥杯第十三届蓝桥杯大赛软件赛决赛CC++ 研究生组之选素数,蓝桥杯第十三届软件赛决赛CC++研究生组选素数挑战赛精彩回顾,蓝桥杯第十三届软件赛决赛CC++研究生组选素数挑战赛精彩回顾与解析 第1张

#include <cmath>

using namespace std;

bool isPrime(int n) {

if (n <= 1) return false;

for (int i = 2; i <= sqrt(n); ++i) {

if (n % i == 0) return false;

}

return true;

int findSmallestX(int x1) {

int maxPrimeFactor = -1; // 用于存储最大的质因数

蓝桥杯第十三届蓝桥杯大赛软件赛决赛CC++ 研究生组之选素数,蓝桥杯第十三届软件赛决赛CC++研究生组选素数挑战赛精彩回顾,蓝桥杯第十三届软件赛决赛CC++研究生组选素数挑战赛精彩回顾与解析 第2张

for (int i = sqrt(x1); i > 1; --i) { // 从大到小寻找最大的质因数

if (isPrime(i) && x1 % i == 0) { // 如果i是质数且能整除x1

maxPrimeFactor = i; // 更新最大的质因数

break; // 找到最大的质因数后退出循环

}

}

if (maxPrimeFactor == -1) { // 如果找不到质因数直接返回x1(因为本身就是素数)

return x1;

} else { // 存在最大质因数的情况下的操作次数为两次的情况下的最小x值计算方式:当前最大质因数减一加上次大质因数减一再加一(如果存在次大质因数)再加一得到最终结果,如果不存在次大质因数则直接返回当前最大质因数减一再加一的结果作为答案,此处省略了次大质因数的寻找过程,直接返回当前最大质因数减一再加一的结果作为答案,因为题目只要求找到最小的x值,所以不需要寻找次大质因数,因此直接返回maxPrimeFactor + 2作为答案,如果不存在次大质因数则直接返回当前最大质因数减一再加一的结果作为答案,即maxPrimeFactor - maxPrimeFactor % 2 + 2作为答案,此处代码省略了次大质因数的寻找过程,直接返回结果,因此直接返回maxPrimeFactor + 1作为答案,即当前最大质因数的下一个最接近的素数的值作为答案,即当前最大质因数加一的值为答案,即当前最大质因数加二的值作为答案(如果存在次大质因数),如果不存在次大质因数则直接返回当前最大质因数加二的值作为答案,如果不存在次大质因数则直接返回当前最大质因数减一再加一的结果作为答案,即直接返回maxPrimeFactor + 1作为最小的满足条件的x值,即直接返回当前最大质因数的下一个最接近的素数作为答案,即直接返回当前最大质因数的下一个最接近的素数的值作为答案,如果不存在次大质因数则直接返回当前最大质因数加二的值作为答案,如果不存在次大质因数且当前最大质因数为偶数时直接返回当前最大质因数减一再加二的结果作为答案,如果不存在次大质因数且当前最大质因数为奇数时直接返回当前最大质因数加二的结果作为答案,如果不存在次大质因数时直接返回当前最大质因数的下一个最接近的素数加二的结果作为答案,如果不存在次大质因数时直接返回maxPrimeFactor + 3作为答案,因为题目要求的是最小的满足条件的x值,所以不需要考虑其他复杂情况,直接返回最小的满足条件的值即可,因此代码实现如下:", "``cpp", "#include <iostream>", "#include <cmath>", "using namespace std;", "bool isPrime(int n);", "int findSmallestX(int x1);", "int main() {", " int x = findSmallestX(目标值);", " cout << \"最小的满足条件的x值为:\" << x << endl;", " return 0;", "}", "bool isPrime(int n) {", " if (n <= 1) return false;", " for (int i = 2; i * i <= n; ++i) {", " if (n % i == 0) return false;", " }", " return true;", "}", "int findSmallestX(int x1) {", " int maxPrimeFactor = -1;", " for (int i = sqrt(x1); i > 1 && x1 != i; --i) {", " if (isPrime(i)) {", " maxPrimeFactor = i;", " break;", " }", " }", " if (maxPrimeFactor == -1 || x1 == maxPrimeFactor)", " return x1;", " else", " return maxPrimeFactor + 2;", "}", "cpp`````cpp")`这段修正后的代码首先定义了一个判断素数的函数isPrime和一个寻找最小满足条件的x值的函数findSmallestX,在findSmallestX`函数中


0
收藏0
文章版权声明:除非注明,否则均为VPS857原创文章,转载或复制请以超链接形式并注明出处。

相关阅读

  • 【研发日记】Matlab/Simulink自动生成代码(二)——五种选择结构实现方法,Matlab/Simulink自动生成代码的五种选择结构实现方法(二),Matlab/Simulink自动生成代码的五种选择结构实现方法详解(二)
  • 超级好用的C++实用库之跨平台实用方法,跨平台实用方法的C++实用库超好用指南,C++跨平台实用库使用指南,超好用实用方法集合,C++跨平台实用库超好用指南,方法与技巧集合
  • 【动态规划】斐波那契数列模型(C++),斐波那契数列模型(C++实现与动态规划解析),斐波那契数列模型解析与C++实现(动态规划)
  • 【C++】,string类底层的模拟实现,C++中string类的模拟底层实现探究
  • uniapp 小程序实现微信授权登录(前端和后端),Uniapp小程序实现微信授权登录全流程(前端后端全攻略),Uniapp小程序微信授权登录全流程攻略,前端后端全指南
  • Vue脚手架的安装(保姆级教程),Vue脚手架保姆级安装教程,Vue脚手架保姆级安装指南,Vue脚手架保姆级安装指南,从零开始教你如何安装Vue脚手架
  • 如何在树莓派 Raspberry Pi中本地部署一个web站点并实现无公网IP远程访问,树莓派上本地部署Web站点及无公网IP远程访问指南,树莓派部署Web站点及无公网IP远程访问指南,本地部署与远程访问实践,树莓派部署Web站点及无公网IP远程访问实践指南,树莓派部署Web站点及无公网IP远程访问实践指南,本地部署与远程访问详解,树莓派部署Web站点及无公网IP远程访问实践详解,本地部署与远程访问指南,树莓派部署Web站点及无公网IP远程访问实践详解,本地部署与远程访问指南。
  • vue2技术栈实现AI问答机器人功能(流式与非流式两种接口方法),Vue2技术栈实现AI问答机器人功能,流式与非流式接口方法探究,Vue2技术栈实现AI问答机器人功能,流式与非流式接口方法详解
  • 发表评论

    快捷回复:表情:
    评论列表 (暂无评论,0人围观)

    还没有评论,来说两句吧...

    目录[+]

    取消
    微信二维码
    微信二维码
    支付宝二维码