【发布时间】:2016-12-02 20:12:49
【问题描述】:
我在 MATLAB 中编写了自己的函数,如果输入数字是质数,它将返回“真”,如果不是,则返回“假”。
对于数字 0、1 和 2,它可以工作,但对于 2 以上的任何数字,它都不会做任何事情。 (顺便说一句,我重新创建了 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 的数字:
【问题讨论】:
-
由于没有专门的 matlab 知识,很明显你没有代码来处理
p > 2的任何情况。看起来像是你最后一个if上的打字机。不能说除此之外。 -
不仅如此,无论如何也没有设置
A=false;的代码。因此,即使删除了拼写错误,所有输入数字都返回为素数。我想R=false;是另一个错字,应该是A=false;。