Matlab 中的 break 语句

Break statement in Matlab

对于某个数 n 我必须找到下一个比 n 大的数,它是质数。 我不得不在 Matlab 中解决这个问题。 下面是我的代码:

解决方案1

 function k = next_prime(n)
while n<10000000000
    n=n+1;
    if isprime(n)==true      
        k=n;
        break
    end
end
end

这样问题就正确解决了,但是我最初的解决方案是:

解决方案2

function k = next_prime(n)
    while n<10000000000
        n=n+1;
        if isprime(n)==true      
            k=n;
        end
    break
    end
    end

Solution1Solution2 之间的唯一区别是 break 语句位置。 为什么 Solution1 可以,而 Solution2 不行?

MATLAB中的break语句

terminates the execution of a for or while loop. Statements in the loop after the break statement do not execute.

在解决方案 2 中,您保证在每次循环迭代时都会中断,而不仅仅是在它是质数时。因此它总是只 运行 循环一次,将 n 设置为 n+1 然后在不设置 k 的情况下中断(除非巧合 n+1 是素数)。

如果你修正了缩进,它可能会帮助你看到它:

function k = next_prime(n)
    while n<10000000000

        n=n+1;

        if isprime(n)==true      
            k=n;
        end

        break

    end
end

所以循环做了 3 件事,它递增 n,它检查 n 是否为质数,然后它总是退出。

解法一,只要如果 n是质数就退出,这显然是你想要的。