#include<iostream>
using namespace std;
const int maxn=1000005;
int a[maxn];
void prime()
{
int i,j;
a[0]=0;a[1]=0;
for(i=2;i<=maxn;i++)
a[i]=1;
for(i=2;i<=maxn;i++)
{
if(a[i])
{
for(j=2;i*j<=maxn;j++)
a[j*i]=0;
}
}
}
int main()
{
int n,i,p;
prime();
while(cin>>n)
{
i=0;
p=0;
while(n!=1)
{
if(a[i])
{
while(n%i==0)//一开始我写成了a[i],一直没用
{
n=n/i;
p++;
}
}
i++;
}
if(p==2)
cout<<"Yes"<<endl;
else
cout<<"No"<<endl;
}
return 0;
using namespace std;
const int maxn=1000005;
int a[maxn];
void prime()
{
int i,j;
a[0]=0;a[1]=0;
for(i=2;i<=maxn;i++)
a[i]=1;
for(i=2;i<=maxn;i++)
{
if(a[i])
{
for(j=2;i*j<=maxn;j++)
a[j*i]=0;
}
}
}
int main()
{
int n,i,p;
prime();
while(cin>>n)
{
i=0;
p=0;
while(n!=1)
{
if(a[i])
{
while(n%i==0)//一开始我写成了a[i],一直没用
{
n=n/i;
p++;
}
}
i++;
}
if(p==2)
cout<<"Yes"<<endl;
else
cout<<"No"<<endl;
}
return 0;
}
另外一种方法:
while(cin>>n)
{
if (n==2) printf("NO\n");
for (int i=2; i<=n-1; i++)
if (a[i])
{
if (a[n/i])
{
printf("YES\n");
break;
}
else
{
printf("NO\n");
break;
}
}
}