解题思路:从3开始逐个寻找质数并相乘,直到质数的个数等于n。实现的具体代码有详细备注

注意事项:

参考代码:

#include<iostream>

#include<cmath>

#include<vector>

using namespace std;

int n;

vector<int> vec;                //动态数组vec用于存储质数 

int main()

{

cin>>n;

vec.push_back(2);             //将第一个质数2放入vec数组中 

bool flag=true;              //用于判断数i是否能被vec数组中的数整除 

long long muti=2;           //初始成绩设为2,即为质数2 

for(int i=3;vec.size()<n;i++)                              //从i=3开始累加,直到质数个数为n个 

{

flag=true;             //每轮循环flag从true开始,一旦发现i是质数(即能被vec数组中的数整除),就将flag设为false 

if(i%2==0||(i>3&&i%3==0)||(i>5&&i%5==0)||(i>7&&i%7==0))//进行简单的剪枝 

continue;

for(int j=0;vec[j]<=sqrt(i);j++)                       

{

if(i%vec[j]==0)                     //判断数组中是否存在数可以被i整除 

{

flag=false;                     //此时i不是质数 

break;                          //退出循环 

}

}

if(flag)                                //如果flag为true,即 数组中没有数能被i整除,此时i为质数 

{

vec.push_back(i);                   //将质数i放入vec数组中 

muti=(muti%50000)*(i%50000)%50000;  //计算乘积 

}

}

cout<<muti<<endl;                           //输出最终乘积 

}


点赞(0)
 

0.0分

0 人评分

C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:

一点编程也不会写的:零基础C语言学练课程

解决困扰你多年的C语言疑难杂症特性的C语言进阶课程

从零到写出一个爬虫的Python编程课程

只会语法写不出代码?手把手带你写100个编程真题的编程百练课程

信息学奥赛或C++选手的 必学C++课程

蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程

手把手讲解近五年真题的蓝桥杯辅导课程

评论列表 共有 0 条评论

暂无评论