【质数构造以及质因数分解】
int primes[N],cnt,factor[50],facnum;
void makeprimes()
{
primes[0]=2;
primes[1]=3;
cnt=2;
int i,j;
for(i=5;i<M;i+=2)
{
for(j=1;primes[j]*primes[j]<=i;j++)
if(i%primes[j]==0)
break;
if(primes[j]*primes[j]>i)
primes[cnt++]=i;
}
}
【质因数分解】
void getfactor(int t)
{
facnum=0;
for(i=0;primes[i]*primes[i]<=t;i++)
{
if(t%primes[i])
continue;
factor[facnum]=0;
while(t%primes[i]==0)
{
factor[facnum]++;
t/=primes[i];
}
facnum++;
if(t==1)
break;
}
if(t!=1)
factor[facnum++]=1;
}