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

解决方案1解决方案2之间的唯一区别是语句位置break。 为什么解决方案1正常而解决方案 2不正常?

MATLAB 中的break语句

终止 for 或 while 循环的执行。中断语句之后循环中的语句不会执行。

在解决方案 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是否是素数,然后它总是退出。

在解决方案 1 中,仅n是素数时才能退出,这显然是您想要的。

最新更新