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];

这篇博客讨论了如何判断一个数是否为质数的问题,给出了NOIP2015模拟赛中的一个例子。博主首先介绍了质数的定义,并提供了输入输出样例。接着,博主分享了自己使用费马小定理得到50分的解决方案,然后指出正确的方法是通过筛选法。文章最后提到了筛选法在处理大数时的有效性,即只需要筛选到10^6内的素数即可。
最低0.47元/天 解锁文章
656

被折叠的 条评论
为什么被折叠?



