問題のアルゴリズムは、擬似コードで次のようになります。
list.add(2)
for (i = 3 to n)
isPrime=true
for each (j in list)
if ((i mod j) = 0)
isPrime=false
break
if (isPrime)
list.add(i)
return list
今日の私のTAは、このアルゴリズムの複雑さはO(n ^ 2)であると教えてくれましたが、特に任意のnまでの素数が約n / ln(n)であることを考えると、これは正しくないことは間違いありません。 n自体が素数である場合、ループは最後の反復でn / ln(n)回を超えて反復しません。しかし、実際にはO(n ^ 2 / ln(n))よりも低いと思いますが、実際に何であるかを判断する方法がわかりません。たとえば、すべての偶数は2番目のループを2回だけ繰り返します。