Программа пытается проверять на делимость все числа от 600851475143 подряд, и на этом зависает (слишком много проверок нужно выполнить). Переменная С уменьшается только вычитанием единицы.
И считает она не то, что нужно.
Я поправил так (самый простой код, можно ещё оптимизировать, например, проверять числа до корня квадратного из делимого, а не до делимого). Но для новичка сойдёт.
#include <iostream>
int main()
{
std::cout << "Hello World!\n";
unsigned long long C = 600851475143;
unsigned long long temp=3;
if((C % 2) == 0)
{
C = C / 2;
std::cout << 2 << std::endl;
}
while (C > 1)
{
if (C % temp == 0) {
C = C / temp;
std::cout << temp << std::endl;
}
temp=temp+2;
}
}
Вывод:
Hello World!
71
839
1471
6857