N!是否能被N^2整除

View Code
#include<iostream>
#include
<cstring>
using namespace std;
typedef
long long ll;
int p[100001] , tem[100001] ,t;
void Init()
{
memset(p,
0,sizeof(p));
for(ll i=2; i<=100000; i++)
{
if( !p[i] )
{
for( ll j = 2 ; j*i<=100000 ; j++ )
p[j
*i]=1;
}
}
t
=0;
for(int i=2;i<1000000;i++)
{
if(!p[i])
{
tem[t
++]=i;
}
}
}
void Prime(ll n)
{

for(int i=0; i<t && tem[i]<n; i++)
{
if(n%tem[i]==0)
{`
cout
<<"YES"<<endl;
return ;
}
}
cout
<<"NO"<<endl;
}
int main()
{
ll n;
Init();
while(cin>>n)
{
if(n==1) cout<<"YES"<<endl;
else if(n==4) cout<<"NO"<<endl;
else Prime(n);
}
return 0;
}
posted @ 2011-05-20 17:41  聊聊IT那些事  阅读(267)  评论(0编辑  收藏  举报