2014-10-09 25 views
-1

這是一個因式分解計算器:http://www.mathwarehouse.com/arithmetic/numbers/prime-number/prime-factorization-calculator.php爲什麼我的計算機在我要求它找到一個非常大的數字的主因式分解時會凍結並崩潰?

當我在裏面輸入一個數字,然後點擊「計算」,我的電腦將嘗試每一個素數來劃分它(到它的平方根)得到它的主要因式分解。

但我的問題是關於當我輸入一個非常大的數字...

的Mozilla Firefox凍結,然後崩潰慘敗會發生什麼。

但是爲什麼?我的電腦在想什麼?難道它不知道這個數字太大,而且他不可能成功?因此,爲什麼它不能停止計算而不是凍結然後崩潰?

如果我要求你跳出窗外,你會先評估情況,然後你會打電話給我:「不,我不會,身高太大」。同樣,當我要求我的電腦計算一個可笑的大數的主因式分解時,爲什麼它不能告訴我:「不,我不會,數字太大」?

我的電腦只是一味的計算,一次也沒猶豫,從來沒有一次撤退,直到它撞上大磚牆...

回答

1

它崩潰,因爲在頁面軟件

其實一個錯誤,頁面不嘗試檢測到這種情況。如果你看它的源代碼

mw_translateObject ['large1'] =「這是一個非常大的數字,計算器在超時之前可能會或可能不會分解它。

如果你輸入一個非常大的數字,它崩潰,且不會再顯示此消息時,它是一個錯誤......

0

計算機只有正是他們被告知不要。他們不退後評價「嘿,這是個好主意嗎?」。如果「計算」功能試圖最難找到一個因素,那麼它將繼續這樣做,直到它成功或出現問題。

爲了評估輸入是否「太大」,原程序員必須專門寫一些東西來確定「太大」意味着什麼(對於您的臺式計算機來說,這將與您的手機不同)如果數量超過這個數字,則不繼續。確定「太大」對於複雜算法實際意味着什麼可能也很困難。

+0

IOW我們共同執行模型是非常差的,還是經過70+年計算的歷史(這是隻是計算)。但是可以想象,包括在每個新任務的沙箱中執行,包括各種反饋(如時間流逝)和預計完成時間(自動派生) - 作爲執行模型的一部分,不包含任何干預或預處理,想到一個程序員。我們的編譯器可以始終在後臺運行,試圖改進運行代碼,根據需要重新編譯和熱插拔。然後,*人*操作員可能會介入,等待時間太長...... – 2014-10-09 12:37:14

+0

......但這意味着在任何地方都可以使用(可能是非常高級別的)源代碼,最終,代碼編寫人工智能專家系統將替代人類程序員離開僅限於*設計師*。所以它不會以我們的方式*明天*相當... – 2014-10-09 12:39:23

+0

@WillNess:有人可能會說我們目前擁有的執行模式非常糟糕,但它比所有的替代方案都要好。 :) – 2014-10-09 19:58:16

相關問題