0
for(i=1;i<=2237;i++)
{
for(j=i+1;j<=2237;j++)
{
for(k=1;k*(i*i+j*j)<=5000000;k++)
{
a[k*(i*i+j*j)]=1;
}
}
}
ここで5 * 10^6はnと仮定でき、2237はsqrt(n)で近似されます。私は外側の2つのループの複雑さを理解することができます、それは私が混乱している最も内側のループです。このトリプルループの複雑さ?
可変入力のサイズがないため、O(1)です。はい、定数は高いですが、それにもかかわらず一定です。 –
これは、 '2237'を' n'で置き換えると、あなたの内部ループはO(n^2)回繰り返され、そして ' kループはn *(n^2 + n^2)を反復する。すなわちO(n^3)である。全体の複雑さはO(n^5)でなければなりません。 (しかし直感的には、それを証明する方法はありません) –
上記のコードスニペットで述べたように、5 * 10^6はnで置き換えられ、次に2237はsqrt(n)で置き換えられます。 –