【发布时间】:2020-05-12 10:42:46
【问题描述】:
我无法计算这个程序的时间复杂度。
`const int n=1e6+5;
int prime[n];
void pre()
{
prime[1]=1;
for(int i=2;i<n;i++)
{
if(!prime[i])
{
for(int j=2;i*j<n;j++)
{
prime[i*j]=1;
}
}
}
}`
你能用大 O 表示法告诉这个程序的时间复杂度是多少
【问题讨论】:
-
看起来像埃拉托色尼的筛子
-
二次复杂度。大概是作业,但现在你得到了答案,你能解释一下吗?
-
@john 不正确,它不是二次的。
-
@john 少看内部循环控制:
i*j<n
标签: c++ algorithm time-complexity