2010-12-07 4 views
2

Dépassement de pile. Je vois ici d'excellentes ressources sur la complexité temporelle, mais jusqu'ici je n'ai pas été capable de répondre à cette question de complexité spatiale en les utilisant. Donc:Big-O Espace requis pour la multiplication

Si je multiplie les n premiers nombres premiers ensemble, quel espace serait nécessaire pour stocker la réponse? Par exemple, multiplier les mille premiers nombres premiers et stocker le nombre résultant (un entier, quoique grand). Cela nécessiterait-il un espace n-carré ou log (n)?

Merci beaucoup!

+0

Mes premières impressions sont que le Big- L'espace requis est probablement le même que pour n! - mais c'est juste un sentiment ... –

Répondre

0

Je prends juste la dernière partie de votre question. Si vous avez une liste des n premiers nombres premiers, le nombre de chiffres dans la multiplication finale sera log (n^n) qui est juste n log n. Puisque l'algorithme consisterait simplement à multiplier chacun avec un seul accumulateur, je dirais que l'espace total requis serait le nombre de chiffres final attendu, qui est: n log (n)

+0

Pourquoi le nombre de chiffres dans la multiplication finale serait-il log (n^n)? Je ne dis pas que tu te trompes, je ne vois juste pas cette étape cruciale ...! –

+0

Je pense qu'il y a plus de O (n log n) chiffres dans le produit des n premiers nombres premiers. Vois ma réponse. –

1

Le prime number theorem nous dit que le n ème premier est d'environ n en n, de sorte que le produit de la première n nombres premiers est d'environ

Π i ≤ n (i ln i) = n! O ((log n) n) = O ((n log n) n)

Et pour représenter ce numéro, vous auriez besoin d'espace est la logarithme de cela, à savoir

O (n (log n + journal log n)).

(Notez que ceci est asymptotiquement plus grand que l'espace nécessaire pour stocker n!, Qui est juste O (n log n).)

+0

Merci! Très appréciée. –