Программа пытается проверять на делимость все числа от 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