Вопрос:
"Основными факторами 13195 являются 5, 7, 13 и 29.
Каков максимальный первичный коэффициент числа 600851475143? "
#include<iostream.h>
#include<conio.h>
#include<math.h>
void main()
{
clrscr();
long double x=600851475143,n;
for(n=2;;n++)
{redo:if(fmod(x,n) == 0)
{ x=x/n;
goto redo;
}
if(x == 1)
{
cout<<n
break;
}
}
getch();
}
Я попытался решить это, не используя грубую силу, но мой вывод всегда 688543. Я не смог найти глюк. Пожалуйста помоги. Спасибо.
Здесь ваш код, переведенный на фактический C++ (я не изменил его семантику):
#include <iostream>
#include <cmath>
int main()
{
long double x = 600851475143;
long double n = 2;
while (x > 1) {
if (fmod(x,n) == 0)
x /= n;
else
n++;
}
std::cout << n << '\n';
}
Ваш алгоритм в порядке. Либо ваш компилятор очень сломан, вы работаете над 16-битной системой, либо вы сделали еще одну ошибку, которую вы нам не показали.
for - goto/label
заставило меня плакатьmain
,goto
for
контроля потока,getch()
.... Я мог бы продолжить.