Chodzi o to, że pyton próbuje wydrukować pierwszy wynik. Ale liczba ta ma cyfry miliardów, a python nie wypróżnia wyjścia, dopóki nie napotkany zostanie znak nowej linii, który następuje po wysłaniu wszystkich cyfr na standardowe wyjście. Jak wspomniał @abarnert, co jest wielokrotnie gorsze, to przekształcanie numeru w ciąg do drukowania. Wymaga to znacznej alokacji pamięci i mocy obliczeniowej. Z drugiej strony, drugie wyrażenie wystarczy wydrukować True
. Możesz to sprawdzić, jeśli przypiszesz pierwsze wyrażenie:
>>> a = 632382**518061
W ten sposób wyjście numeru jest pomijane.
Jako poboczny problem, gdy kompilator Pythona widzi '632382 ** 518061', myśli:" hej, prosta operacja na dwóch małych literałach całkowitych, zrobię to podczas kompilacji i ciągłego składania ". Tak więc, aby skompilować ten wiersz kodu, potrzeba około 3 sekund, ale tylko 20 nanosekund, aby go uruchomić (a następnie 200 sekund, aby sformatować ciąg do drukowania ...). Na Interaktywnym Interpremie, który nie ma znaczenia (chyba że spróbujesz porównać z 'timeit'), ale umieścisz go w module i' importuje 'ten moduł, i pierwszy raz zajmie 3 sekundy, ale jeśli zrobisz to ponownie (nawet po wyjściu i ponownym uruchomieniu) nie będzie. – abarnert
Przy okazji, nawet bez problemu z odczytaniem 99, podejrzewam, że chodzi o to, aby podać liczby, które są zbyt duże, aby je obliczyć, więc musisz znać i/lub wyszukać i nauczyć się jakiegoś triku, takiego jak modułowa potęgowanie lub dzielenie się czynniki z każdej strony i tylko obliczania, gdy nie ma wspólnych czynników lub oszacowanie, a następnie testowanie, że błąd sięga. – abarnert
Pamięć i czas są zagrożone, gdy próbuje wyświetlić liczbę z wieloma cyframi, jak widać w pierwszym przykładzie. W drugim nie ma potrzeby wyświetlania, tylko proste porównanie, które nie zużywa tyle czasu, co drukowanie na standardowe wyjście. –