对于某个数字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
是素数时才能退出,这显然是您想要的。