2016-12-02 116 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和那个状态不会发生。

相关问题