查找质因数+质因数分解(欧拉筛法)
判断质因数:

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 }