2016-12-02 115 views
-4

我在MATLAB中編寫了自己的函數,如果輸入數字是素數,它將返回「真」,如果不是,則返回「假」。MATLAB不會給出答案

隨着數字0,1和2它的工作,但任何2以上的東西它什麼也沒做。 (順便說一句,我重新isprime,所以OBV我不會用在這裏。)

function [A] = myprime(p) 
    m = 2; 

    if p<1 
     disp('Number too low') 
    end 

    if p == 1 
     A = false; 
    end 

    if p == 2 
     A=true; 
    end 

    if p < 2 
     while m < p 
      A = true; 
      x = mod(p, m); 
      if x == 0 
       m=p; 
       R=false; 
      end 
      m=m+1; 
     end 
    end 
end 

正如你所看到的,它給出了0,1和2的結果,但沒有爲任何數量的上述2:

因爲你設置

Enter image description here

+6

由於沒有專門的matlab知識,所以很顯然你沒有代碼來處理任何'p> 2'的情況。看起來像是最後一個'if'的打字機。不能說超越。 – CollinD

+4

不僅如此,在任何情況下也沒有設置「A = false」的代碼。因此,即使刪除了錯字,所有輸入數字都會返回爲素數。我想'R = false;'是另一個錯字,應該是'A = false;'。 –

回答

0

有一個與你的代碼有問題,你沒有申報,其中p> 2,也是我認爲你宣佈

if p<2 
while m<p 

行的狀態是不正確的M = 2和那個狀態不會發生。

相關問題