我必须在所有数字中找到多个最小素数因子,直到10 ^ 7.我正在使用Eratosthenes的Sieve来找到所有素数.并且在一个单独的数组中,我存储了复合数的最小素因子.这是我的代码
for(ull i=2;i<=m;i++)
{
if (check[i])
{
uncheck[i]=true;
for (ull k=i*i; k<=n; k+=i)
{
if(check[k]==true)
phi[k]=g;
check[k]=false;
}
}
}
Run Code Online (Sandbox Code Playgroud)
现在我正在运行一个循环,直到n并在其中使用循环来计算它.这是代码
for(ull i=4;i<=n;i++)
{
if(check[i]==false)
{
ull count=0;
ull l=i;
ull r=phi[i];
while(l%r==0)
{
l=l/r;
count++;
}
cout<<count<<'\n';
}
}
Run Code Online (Sandbox Code Playgroud)
有没有更快的方法来计算这个?