题目描述
Torry从小喜爱数学。一天,老师告诉他, 像2、3、5、7……这样的数叫做质数。Torry突然想到一个问题,前10、100、1000、10000……个质数的乘积是多少呢?他把这个问题告诉 老师。老师愣住了,一时回答不出来。于是Torry求助于会编程的你,请你算出前n个质数的乘积。不过,考虑到你才接触编程不久,Torry只要你算出这 个数模上50000的值。
输入格式
仅包含一个正整数n,其中n< =100000。
输出格式
输出一行,即前n个质数的乘积模50000的值。
样例输入
1
样例输出
2
思路
因为是计算第n个质数,所以设循环从质数个数开始数,直到数量等于n
考虑到质数的大小,用long long来设置质数变量
#include<stdio.h>
#include<math.h>
int PrimeNum(long long n) {//检查是否是质数
for (int i = 2;i <= sqrt(n);i++) {
if (n % i == 0)
return 0;
}
return 1;
}
int main() {
int n;
scanf("%d", &n);
int i = 1;//质数个数
long long prime = 2;//质数
int result = 2;//相乘的结果
while (i < n) {
prime += 1;//数字增长
if (PrimeNum(prime)) {//检查质数
result = result * (prime % 50000) % 50000;//质数相乘
i++;//个数+1
}
}
printf("%d", result);
return 0;
}
2083

被折叠的 条评论
为什么被折叠?



