Если он работает, он, вероятно, не является целочисленным переполнением в этом конкретном случае.
6008514751432/2, поскольку 32-разрядное целое число получается отрицательным (-144495672), поэтому цикл while будет немедленно завершен.
Целочисленное переполнение порождает неопределенное поведение, поэтому может произойти все что угодно, но большинство систем ведут себя предсказуемо
Также, если оно было переполнено, ваш компилятор должен был предупредить вас или даже отказаться от его компиляции.
Половина из 6008514751432 все еще довольно велика, и для подсчета этого высокого значения и выполнения всех этих «%» операций потребуется значительное время.Между тем первые несколько факторов (1,2,4,8,1307,2614 и т. Д.) Были отправлены в COUT, но еще не сброшены, поэтому эти результаты находятся в буфере, где вы их не видите.
Если вы измените свою программу, чтобы поместить каждое число в новую строку, которая может дать некоторые результаты раньше, вы все равно будете ждать дни или недели окончательного результата.
Я предлагаю вам искать более быстрый факторингалгоритм.
Спойлер: FWIW 6008514751432 имеет простые множители