Le saviez-vous! Il n'y a pas de limite au nombre d'entiers qui peuvent être représentés en python! !! Puisque int en C est 32 bits, il ne peut représenter que 2147483647. Même le long long utilisé lorsqu'il s'agit de grands nombres ne peut représenter que 64 bits, c'est-à-dire 9223372036854775807. D'un autre côté, int en python est infini.
Quand j'entends qu'il n'y a pas de limite supérieure, c'est l'humanité qui me donne envie de traiter un grand nombre de matières fécales. Pour voir s'il y a vraiment une limite, et s'il n'y a pas de limite, combien de temps le calcul sera J'ai fait une expérience simple! Vérifiez en fait le temps requis pour le calcul et le temps requis pour l'affichage en fonction du code suivant.
test.py
num_list, time_list = [], []
for i in range(9):
start = time.time()
ans = 10 ** (10 ** i)
end = time.time()
print('Elapsed time to calculate 10 ** {} is {}'.format(10 ** i, end - start))
num_list.append(10 ** i)
time_list.append(end - start)
plt.plot(num_list, time_list)
plt.show()
Les résultats expérimentaux sont présentés dans le tableau ci-dessous! C'est difficile à comprendre, mais les nombres à l'extrême gauche du tableau représentent la partie $ n $ de $ 10 ^ n $. Par conséquent, 100 dans la colonne supérieure du tableau est le temps nécessaire pour calculer et afficher 10 $ ^ {100} $.
calculate[s] | print[s] | |
---|---|---|
100 | 0.000 | 0.000 |
1000 | 0.000 | 0.000 |
10000 | 0.000 | 0.002992 |
1e05 | 0.01562 | 0.1396 |
1e06 | 0.1562 | 13.27 |
1e07 | 5.985 | 1324 |
1e08 | 221.7 | - |
1e09 | 8791 | - |
Même un si grand nombre peut être calculé correctement, mais cela prend beaucoup de temps. Lorsque $ n $ augmente 10 fois, le temps de calcul augmentera de 40 fois et le temps d'affichage augmentera de 100 fois. Au fait, même si vous dites "afficher", la valeur est trop grande pour être affichée sur la console à cause d'un bug (naturellement). De plus, imprimer 1e08 et 1e09 ne sont pas des données car cela a pris trop de temps et j'en ai eu marre. Le chiffre que le bogue est affiché à partir de 0 →![Print_bag.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/419937/c813ae25-9631-1129- 6c24-2b0c1afd528e.png)
Le graphique est ci-dessous. Comme je l'ai mentionné ci-dessus, il semble que cela augmentera de façon exponentielle!
Au début, j'ai commencé à penser au calcul de Googolplex, mais en premier lieu
Recommended Posts