解题思路:从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语言程序设计教程(第三版)课后习题8.9 (C语言代码) 用函数传参的方法浏览:4120 |
C语言程序设计教程(第三版)课后习题4.9 (C语言代码)浏览:1555 |
C语言程序设计教程(第三版)课后习题5.7 (C语言代码)浏览:537 |
简单的a+b (C语言代码)浏览:572 |
1051(奇了怪了)浏览:747 |
C语言程序设计教程(第三版)课后习题10.1 (C语言代码)浏览:571 |
DNA (C语言代码)浏览:837 |
Tom数 (C语言代码)浏览:598 |
C语言程序设计教程(第三版)课后习题6.1 (C语言代码)浏览:532 |
青年歌手大奖赛_评委会打分 (C语言代码)浏览:2248 |