Project Euler c ++ # 3

0

Вопрос:

"Основными факторами 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. Я не смог найти глюк. Пожалуйста помоги. Спасибо.

  • 9
    Что for - goto/label заставило меня плакать
  • 1
    Ваш абзац .... креативный ... по меньшей мере. Плюс несуществующие заголовки, неправильный тип возврата для main , goto for контроля потока, getch() .... Я мог бы продолжить.
Теги:

1 ответ

1
Лучший ответ

Здесь ваш код, переведенный на фактический 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';
}

Результат: 6857

Ваш алгоритм в порядке. Либо ваш компилятор очень сломан, вы работаете над 16-битной системой, либо вы сделали еще одну ошибку, которую вы нам не показали.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню