3210 - ADV-11 Torry的困惑(提高型)
时间限制 : 1 秒
内存限制 : 128 MB
Torry从小喜爱数学。一天,老师告诉他,像2、3、5、7……这样的数叫做质数。Torry突然想到一个问题,前10、100、1000、10000……个质数的乘积是多少呢?他把这个问题告诉老师。老师愣住了,一时回答不出来。于是Torry求助于会编程的你,请你算出前n个质数的乘积。不过,考虑到你才接触编程不久,Torry只要你算出这个数模上50000的值。
题目输入
仅包含一个正整数n,其中n<=100000。
题目输出
输出一行,即前n个质数的乘积模50000的值。
输入/输出样例
输入格式
1
输出格式
2
C++解答
#include <iostream> #include <cmath> using namespace std; int isPrime(int n) { int i,j=sqrt(n); for(i=2;i<=j;i++) if(n%i==0) return 0; return 1; } int main() { int i,n,cnt=1; long long mul=2;//乘积 cin>>n; for(i=3;cnt!=n;i+=2) { if(isPrime(i)) { mul=mul*i%50000; cnt++; } } cout<<mul; return 0; }
Java解答
import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner sc = new Scanner(System.in); int n = sc.nextInt(); int i,count=1; long mul=2; for(i=3;count!=n;i+=2) { if(isPrime(i)) { mul = mul*i%50000; count++; } } System.out.println(mul); } static boolean isPrime(int n) { for(int i=2;i*i<=n;i++) { if(n%i == 0) return false; } return true; } }