-1

我不小心传递isprime()了一个非整数值 3.2;令我惊讶的是,我收到的错误是:

??? Error using ==> isprime at 18
All entries of X must be nonnegative integers.

这是matlab的错误输出中的某种错误,还是这个陈述有一些潜在的基础?

提前致谢。

编辑:我明白什么是质数,但显然我无法阅读错误消息。我虽然是说我的意见是负面的......

4

2 回答 2

2

3.2不是非负整数,因此您会收到错误消息must be nonnegative integer。为什么你认为这是一个错误?非负整数的示例是 5、20、32、1 或 4。

如果要使用负数,isprime请先取绝对值。

x = -5
isprime(abs(x)) % this works
于 2013-06-03T23:11:47.873 回答
0

质数被定义为在大于一的自然数集中。这些是我们用来计数的数字:{1, 2, 3, 4, ... }. 所有这些数字都是非负数。都是整数。

所以是的,以某种方式isprime抛出错误是正确的。但是,它也可能已经返回false,这可能就是您问这个问题的原因。但定义isprime(3.2)明确。在某种程度上,这是一个没有意义的问题。在这种情况下返回的A 与false返回的 不完全相同isprime(4)。代码的编写者决定抛出一个错误,但可以使用一种NaN或另一种形式'undefined'(即使这有问题,尽管NaN在许多地方都有特定的含义)。

于 2013-06-03T23:20:02.577 回答