【问题标题】:MATLAB won't give out the answerMATLAB 不会给出答案
【发布时间】: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 &gt; 2 的任何情况。看起来像是你最后一个if 上的打字机。不能说除此之外。
  • 不仅如此,无论如何也没有设置A=false;的代码。因此,即使删除了拼写错误,所有输入数字都返回为素数。我想R=false; 是另一个错字,应该是A=false;

标签: matlab primes


【解决方案1】:

你的代码有问题,你没有声明 p>2 的状态,而且我认为你声明的行

if p<2
while m<p

不正确,因为您设置了 m=2 并且该状态不会发生。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-01-25
    • 1970-01-01
    • 1970-01-01
    • 2020-10-03
    • 2021-08-07
    • 1970-01-01
    • 1970-01-01
    • 2019-02-19
    相关资源
    最近更新 更多