Компилятор C однажды «опроверг» теорему Ферма Теорема Ферма говорит… — DevOps — TG.ME

✔️ Компилятор C однажды «опроверг» теорему Ферма

Теорема Ферма говорит: не существует целых чисел, для которых выполняется:

`a³ + b³ = c³`

Её доказал Эндрю Уайлс в 1995 году - спустя 358 лет после формулировки.

Но затем Джон Регер показал забавный пример: цикл, скомпилированный через gcc -O2, мог напечатать:

Fermat's Last Theorem has been disproved

В коде происходило signed integer overflow - переполнение знакового int. А в C это undefined behavior.

Для компилятора это значит: «такого не должно происходить». Поэтому оптимизатор имеет право строить предположения, которые человеку кажутся абсурдными.

В итоге: программа выглядит так, будто нашла контрпример к великой теореме, хотя на деле просто попала в UB.

C не опроверг Ферма.

C просто напомнил, что undefined behavior - это не ошибка выполнения, а разрешение компилятору делать почти всё что угодно.
👍8❤1
June 28, 2026 3.3K 9