资源限制
时间限制:1.0s 内存限制:512.0MB
问题描述
Torry从小喜爱数学。一天,老师告诉他,像2、3、5、7……这样的数叫做质数。Torry突然想到一个问题,前10、100、1000、10000……个质数的乘积是多少呢?他把这个问题告诉老师。老师愣住了,一时回答不出来。于是Torry求助于会编程的你,请你算出前n个质数的乘积。不过,考虑到你才接触编程不久,Torry只要你算出这个数模上50000的值。
输入格式
仅包含一个正整数n,其中n<=100000。
输出格式
输出一行,即前n个质数的乘积模50000的值。
样例输入
1
样例输出
2
解题思路:
最近的题目都比较友好呢,话不多说,开始解题。解题关键为一是求前n个质数,二是求乘积取50000的模。求前n个质数用while循环包含for循环的算法,while循环是控制质数为n个,for循环是为了找质数,注意找质数的过程有捷径,就是找到该数的平方根如果还没有找到因子就说明这个数是质数。详情见代码:
#include
using namespace std;
int a[100000];//储存质数
int main() {
int n;
cin >> n;
int num = 0;
int sum = 1;
int i = 2;
while(num < n){//判断质数的数量
bool flag = true;//判断是否为质数的标志
for(int j = 2; j <= sqrt(i*1.0); j ++) {
if (i % j == 0) {
flag = false;
break;
}
}
if (flag == true){
a[num++] = i;
}
i ++;
}
for(i = 0; i < num; i ++) {
sum = (sum * a[i]) % 50000;//取模
}
cout << sum;
return 0;
}
HERODING23
原创文章 20获赞 21访问量 1343
关注
私信
展开阅读全文