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

来源:互联网 发布:2016淘宝怎么刷 编辑:程序博客网 时间:2024/04/29 04:23

算法训练 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;}
0 0
原创粉丝点击