方法一:
素数除了1和它本身以外不再有其他因数,通过简化,我们可以从2到这个数的平方根去除就可以判断,比如m,我们只需要从2~√m枚举,如果没有m的因数,则m为素数。
#include <iostream>
#include <math.h>
using namespace std;
int prime(int x)
{
if(x==1) return 0;
for(int i=2;i<=sqrt(x);i++)
if(x%i==0) return 0;
return 1;
}
int main()
{
int n;
cin >> n;
while(n--)
{
int a;
cin >> a;
if(prime(a)==1) cout << "Yes" <<endl;
else cout << "No" << endl;
}
return 0;
}
方法二:
试除法求素数,一个数的因数都是成对出现的:例如16的因数有2和8,4和4所以我们可以只枚举较小的那一个,即根下m,假设较小的为d,较大的为m/d。
#include <iostream>
using namespace std;
int prime(int x)
{
if(x==1) return 0;
for(int i=2;i<=x/i;i++)
if(x%i==0) return 0;
return 1;
}
int main()
{
int n;
cin >> n;
while(n--)
{
int a;
cin >> a;
if(prime(a)==1) cout << "Yes" <<endl;
else cout << "No" << endl;
}
return 0;
}