2013-06-03 29 views
-1

我意外地通過了isprime()一個非整數值3.2;讓我吃驚的是我收到的錯誤是:我明白,喂isprime一個非整數值沒有意義,但

??? Error using ==> isprime at 18 
All entries of X must be nonnegative integers. 

這是在MATLAB的錯誤輸出某種錯誤的,或者是有這種說法有些根本基礎?

在此先感謝。

編輯: 我明白什麼是質數,但顯然我無法讀取錯誤信息。我雖然說是我的輸入是負數...

+0

維基百科:「一個素數(或一個素數)*是大於1 *的自然數,除1和它本身之外沒有任何正數除數。」測試任何非整數或任何小於2的值都是沒有意義的。 – cHao

+0

我誤讀了錯誤信息。我認爲這是說我的觀點是消極的。我試圖讓這個問題關閉。 –

+0

@SteveP。只需按問題下方的「關閉」... – glglgl

回答

2

3.2不是一個非負整數,因此你會得到錯誤must be nonnegative integer。你爲什麼認爲這是一個錯誤?非負整數的示例爲5,20,32,1或4.

如果要在isprime中使用負數,則首先取絕對值。

x = -5 
isprime(abs(x)) % this works 
+0

我誤讀了錯誤信息。我認爲這是說我的觀點是消極的。我試圖讓這個問題關閉。 –

0

素數定義爲大於1的一組natural numbers。這些是我們用於計數的數字:{1, 2, 3, 4, ... }。所有這些數字都是非負的。所有是整數。

所以是的,在一種方式isprime是正確的拋出一個錯誤。但是,它也可能返回false,這可能是您問這個問題的原因。但isprime(3.2)不是well defined。在某種程度上,這是一個沒有道理的問題。在這種情況下返回的falseisprime(4)返回的不完全相同。代碼的作者決定拋出一個錯誤,但可以使用NaN或另一種形式的'undefined'(即使這存在問題,因爲NaN在許多地方具有特定含義)。

+0

我誤讀了錯誤信息。我認爲這是說我的觀點是消極的。我試圖讓這個問題關閉。 –

相關問題