Это мой код:Ошибка при решении суммы проекта Эйлера номер 3 в C++
#include <iostream>
using namespace std;
int main()
{
long int x = 1;
long int res;
while (x<600851475143)
{
x++;
if(600851475143%x==0)
{
res=x;
cout<<x<<"\n";
}
}
}
Я не знаю, что случилось с ним, но он дает мне этот выход:
839
1471
6857
59569
104441
486847
1234169
5753023
10086647
87625999
408464633
716151937
-716151937
-408464633
-87625999
-10086647
-5753023
-1234169
-486847
-104441
-59569
-6857
-1471
-839
-71
-1
Floating point exception
Process returned 136 (0x88) execution time : 156.566 s
Press ENTER to continue.
и когда я заменить 600851475143 с 13195 [который был в примере] ... он работает отлично ... и дает мне этот выход:
5
11
55
11149
Process returned 0 (0x0) execution time : 0.005 s
Press ENTER to continue.
Я не знаю, что я делаю неправильно ... :/
Возможно, моя предыдущая программа не запускалась должным образом ... Я попробовал ее с int в начале, а затем изменил ее на long int ... Нет разницы .. .
Вы должны определить проблему, выполнив свою программу с помощью отладчика. –
вы начинаете с 'x = 2', так как вы выполняете' x ++ 'перед модулем'% '. кроме того, вы уверены, что можете упаковать 600851,475,143 в 'long int'? – vulkanino