小明求素数积
时间限制:
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 <stdio.h> #define MAX 1000 int main() { int n; int a[MAX] ={0}; for(int i = 2; i < MAX/2; i++) { if(a[i] == 0) for(int j = i + i; j < MAX; j += i) a[j] = 1; } scanf("%d",&n); while(n--) { int m; scanf("%d",&m); long long s = 1; for(int i = 2; i <= m; i++) { if(a[i] == 0) { s *= i; s %= 1000000; } } printf("%lld\n",s); } }
-
这题很多人利用数组模拟大数相乘的方法来做,其实,没有这个必要,因为,我们只需要每次相乘后的数字的后六位,这题已经AC了,这里提供参考。
-
第一行输入一个正整数T(T<=20)表示有T组数据