2014-10-09 3 views
-1

Это простые множители калькулятор: http://www.mathwarehouse.com/arithmetic/numbers/prime-number/prime-factorization-calculator.phpПочему мой компьютер зависает и падает, когда я прошу его найти основную факторизацию очень большого числа?

Когда я ввожу номер в нем, а затем нажмите на кнопку «Рассчитать», мой компьютер будет пытаться разделить его на каждом простое число (до его квадратный корень), чтобы получить его первичная факторизация.

Но мой вопрос касается того, что происходит, когда я входной очень большое количество ...

Mozilla Firefox замерзает, а затем падает с треском.

Но почему? Что думал мой компьютер? Не мог ли он понять, что число слишком велико и что он не сможет добиться успеха? И почему он не мог просто перестать рассчитывать вместо замораживания, а затем рушиться?

Если я попрошу вас выскочить из окна, вы сначала оцените ситуацию, а затем вы мне позвоните: «Нет, я не буду, высота слишком велика». Аналогично, когда я прошу свой компьютер рассчитать первичную факторизацию смехотворно большого числа, почему он не может мне сказать: «Нет, я не буду, число слишком велико»?

Мой компьютер просто слепо рассчитывает, ни разу не колеблясь, ни разу не отступают, пока он не врезается в большой кирпичной стене ...

ответ

1

Это происходит сбой из-за ошибки в программном обеспечении страницы

На самом деле, страница действительно пытается обнаружить это условие. Если вы посмотрите на источник, то он говорит:

mw_translateObject ['large1'] = "Это очень большое число. Калькулятор может или не сможет сломать его до истечения времени ожидания".

Если ввести очень большое количество, и он выходит из строя, вместо отображения этого сообщения, то это ошибка ...

0

Компьютеры только делают именно то, что им говорят. Они не отступают и не оценивают «эй, это хорошая идея?». Если функция «Рассчитать» пытается найти наиболее сложный фактор, то он будет продолжать делать это, пока не добьется успеха или что-то пойдет не так.

Чтобы оценить, является ли вход слишком «большим», оригинальному программисту нужно было бы написать что-то конкретное, чтобы решить, что именно означает «слишком большой» (он будет отличаться для вашего настольного компьютера, чем ваш мобильный телефон) , и не продолжать, если число превышает это. Также может быть сложно определить, что означает «слишком большой» для сложного алгоритма.

+0

IOW нашей общая модель выполнения невероятно бедна, по-прежнему, после 70+ лет вычислительной истории (это просто расчет). Но он мог бы включать в себя выполнение в песочнице для каждой новой задачи со всеми видами обратной связи, такими как прошедшее время, и прогнозируемое время до завершения (автоматически полученное) - как часть модели исполнения, без каких-либо вмешательств, подумал о программисте. Наши компиляторы всегда могли постоянно работать в фоновом режиме, пытаясь улучшить исполняемый код, перекомпилировать и «горячую» замену по мере необходимости. Тогда оператор * human * мог вмешаться, слишком долго ожидая ... –

+0

... но это означает наличие (возможно, очень высокого уровня) исходного кода, доступного во всем мире, и, в конечном итоге, создание кодовых текстов искусственных систем, заменяющих человеческих программистов, место только для * дизайнеров *. Так что это не наш путь * завтра * еще совсем ... –

+0

@WillNess: Можно сказать, что модель исполнения, которую мы сейчас имеем, ужасна, но она лучше всех альтернатив. :) –

 Смежные вопросы

  • Нет связанных вопросов^_^