下面判断n是否为素数的算法,其时间复杂度为多少? 急啊!!谢了

下面判断n是否为素数的算法,其时间复杂度为多少?
int PMe(int n)
{
int i=1;
int x=(int) sqrt(n);
while (++i<=x)
if (n%i==0) break;
if (i>x) return 1;
else return 0;
}

第1个回答  推荐于2017-11-24
int PMe(int n)
{
int i=1;//这个语句花费了常数时间,记为o(1)
int x=(int) sqrt(n);;//这个语句花费了常数时间,记为o(1)
while (++i<=x)
if (n%i==0) break;//这个while 循环最多一共运行x次,所以花费了o(sqrt(n))的运行时间
if (i>x) return 1;
else return 0;);;//这个if...else语句花费了常数时间,记为o(1)
}
所以整个算法花费了o(1)+o(1)+o(sqrt(n))+o(1),所以时间复杂度就是o(sqrt(n))。
至于为什么 o(1)+o(1)+o(sqrt(n))+o(1)=o(sqrt(n)),建议您去看麻省理工学院的公开课《算法导论》的第一大部分:基础。在第三章和第四章,讲的很详细。本回答被提问者采纳
第2个回答  2011-12-31
sqrt(n)
第3个回答  2011-12-30
根号n的时间复杂度
第4个回答  2011-12-30
根号n
sqrt (n)
相似回答