解题思路:从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 人评分
C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:
一点编程也不会写的:零基础C语言学练课程
解决困扰你多年的C语言疑难杂症特性的C语言进阶课程
从零到写出一个爬虫的Python编程课程
只会语法写不出代码?手把手带你写100个编程真题的编程百练课程
信息学奥赛或C++选手的 必学C++课程
蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程
手把手讲解近五年真题的蓝桥杯辅导课程
发表评论 取消回复