您的位置:首页 > 其它

蓝桥杯 - Torry的困惑(基本型)

2016-01-31 00:09 429 查看

算法训练 Torry的困惑(基本型)

时间限制: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

用素数筛选法打表就好了

#include<cstdio>
#include<cstring>
#include<cmath>
#include<algorithm>
using namespace std;

int pri[100010];

bool isprime(int a){
for(int i = 2; i < a; i++){
if(a%i == 0)
return false;
}
return true;
}

void prime(){
for(int i = 0; i < 100010; i++)
pri[i] = 1;

int t = sqrt(100010);

for(int i = 2; i <= t; i++){
if(!isprime(i))
pri[i] = 0;
for(int j = i*2; j <= 100010; j+=i)
pri[j] = 0;
}
}

int main()
{

prime();

int n;
while(scanf("%d", &n)!=EOF){
int cnt = 0, res = 1;
for(int i = 2; i < 100010; i++){
if(pri[i] == 1){
cnt++;
//  printf("%d ", i);
res = (res*i)%50000;
}
if(cnt == n)
break;

}
printf("%d\n", res);
}
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: