Description
定义质数为因数只含1和其本身的数,对于N组询问,试判断每个数是否为素数。
Input
第一行一个正整数N,表示有N组询问。
接下来N行,每行一个正整数M,表示询问M是否为质数。
Output
输出N行,每行一个字符串。
若是质数则输出‘Prime’,若不是质数则输出‘Not prime’。
Sample Input
5
2
10
89807289
9032482948
1000000007
Sample Output
Prime
Not prime
Not prime
Not prime
Prime
样例解释:
10=2*5
89807289=3 * 11 * 11 * 13 * 19031
9032482948=2 * 2 * 439 * 5143783
Data Constraint
20%的数据满足N≤100,1<M≤800,000。
50%的数据满足N≤1,000,1<M≤100,000,000。
100%的数据满足N≤1,000,1<M≤1,000,000,000,000。
赛时
下意识认为筛法不可取,然后用了费马小定理。。。。。。然后就50分了
正解
就是筛。。。。。。
由于x最大是10^12,所以只需要将 10^6内的素数筛出来就行了,之后与xmod就行,那么筛法就都可以啦。
代码
#include<cstdio>
#include<cstring>
using namespace std;
int n,cnt,prime[100007];
bool zs[100007