介绍一种O(sqrt(n))的算法:
void pre (int x)
{
for(int i=1;i*i<=x;i++)
{
if(x%i==0)
{
a[++cnt]=i;
if(x!=i*i) a[++cnt]=x/i;
}
}
}
即用sqrt(n)将1~n分开,我们只用求前面的即可,后面的相除就行了。
介绍一种O(sqrt(n))的算法:
void pre (int x)
{
for(int i=1;i*i<=x;i++)
{
if(x%i==0)
{
a[++cnt]=i;
if(x!=i*i) a[++cnt]=x/i;
}
}
}
即用sqrt(n)将1~n分开,我们只用求前面的即可,后面的相除就行了。