小明求素数积
时间限制:
1000 ms | 内存限制:
65535 KB
难度:
1
-
描述
小明最近遇到了一个素数题,是给你一个正整数N(2=<N<=1000)让你求出2~N的所有素数乘积的后六位。
-
输入
-
第一行输入一个正整数T(T<=20)表示有T组数据
每组数据占一行,输入一个正整数N(2=<N<=1000)
输出
- 每组数据输出占一行,输出2~N素数乘积的后六位 样例输入
-
3 3 6 43
样例输出
-
6 30 670030
代码:
#include<stdlib.h> #include<stdio.h> #include<string.h> #include<math.h> #define MAX 1010 bool isPrime[MAX]; int main() { memset(isPrime,true,sizeof(isPrime)); for(int i=2;i<MAX/2;i++){ if(isPrime[i]){ for(int j=i<<1;j<MAX;j+=i){ isPrime[j]=false; } } } int t, n; scanf("%d",&t); while(t--){ scanf("%d",&n); int ans=1; for(int i=2;i<=n;i++){ if(isPrime[i]) { ans*=i; ans%=1000000; } } printf("%d\n",ans); } return 0; }