2016-12-02 10 views
-4

MATLABで独自の関数を書いていますが、入力番号が素数なら「真」、そうでなければ「偽」が返されます。MATLABは答えを教えてくれません

数字が0,1,2の場合は動作しますが、2を超える場合は何もしません。 (ところで、私はそうOBV、私はここにいることを使用することはありません、isprimeを再作成。)

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とも私はあなたがmに設定しているため、あなたが

if p<2 
while m<p 

を宣言した行が=真実ではないと思うの状態を宣言しません2と状態は起こりません。

関連する問題