判断质因数:
void init() { int r=0; for(ri i=2;i<=1e6;i++) { if(!isprism[i]) { qu[++r]=i; isprism[i]=i; } for(ri j=1;j<=r&&qu[j]*i<=1e6;j++) { isprism[qu[j]*i]=qu[j]; if(i%qu[j]==0) break; } }
质因数分解:
while(isprism[a]) { int tmp=isprism[a]; while(tmp==isprism[a]) { a/=isprism[a]; } // solve }