小明求素数积

来源:互联网 发布:网络共享 win10 编辑:程序博客网 时间:2024/05/29 04:09

小明求素数积

时间限制:1000 ms  |  内存限制:65535 KB
难度:1
描述

小明最近遇到了一个素数题,是给你一个正整数N(2=<N<=1000)让你求出2~N的所有素数乘积的后六位。

 

输入
第一行输入一个正整数T(T<=20)表示有T组数据
每组数据占一行,输入一个正整数N(2=<N<=1000)
输出
每组数据输出占一行,输出2~N素数乘积的后六位
样例输入
33643
样例输出
630670030

 

/*利用筛法求出素数表然后利用取模运算:(a*b)%c=((a%c)*(b%c))%c*/#include <stdio.h>bool a[1001];int main(){int T, i;a[2] = true;for(i = 3; i <= 1001; i++){if(i%2 == 0) a[i] = false;else a[i] = true;}for(i = 3; i <= 31; i += 2){if(a[i])for(int j = 2*i; j <= 1001; j += i)a[j] = false;}scanf("%d", &T);while(T--){int N, sum = 1;scanf("%d", &N);for(i = 2; i <= N; i++)if(a[i]) {sum *= i;if(sum > 1000000)sum = sum % 1000000;}printf("%d\n", sum%1000000);}return 0;}


 

原创粉丝点击