在Matlab/octave iPrime问题中拆分素数和非素数

在Matlab/octave iPrime问题中拆分素数和非素数,matlab,octave,primes,Matlab,Octave,Primes,我在八度音阶中运行了一些测试代码,发现iPrime似乎不适用于小数,有人有解决办法吗。我试着把数组分成素数和非素数,数组中有小数和整数。请参见下面的示例代码。错误消息为isprime:需要正整数 感谢杰瑞德 要让我走到这一步,您可以使用以下功能: floatisprime@(a)(round(a)==a)&isprime(round(a)) 逻辑似乎有点奇怪,但如果值是整数rounda==a,下一个整数是素数isprimerounda,那么它就是素数 如果您使用上一个问题中的setdi

我在八度音阶中运行了一些测试代码,发现iPrime似乎不适用于小数,有人有解决办法吗。我试着把数组分成素数和非素数,数组中有小数和整数。请参见下面的示例代码。错误消息为isprime:需要正整数

感谢杰瑞德
要让我走到这一步,您可以使用以下功能:

floatisprime@(a)(round(a)==a)&isprime(round(a))
逻辑似乎有点奇怪,但如果值是整数rounda==a,下一个整数是素数isprimerounda,那么它就是素数

如果您使用上一个问题中的setdiff思想,那么您没有问题:

noprimes=setdiff(a,primes(max(a)))

然后在noprimes上迭代

您可以使用此函数:

floatisprime@(a)(round(a)==a)&isprime(round(a))
逻辑似乎有点奇怪,但如果值是整数rounda==a,下一个整数是素数isprimerounda,那么它就是素数

如果您使用上一个问题中的setdiff思想,那么您没有问题:

noprimes=setdiff(a,primes(max(a)))

然后在noprimes上迭代

如果你看这些函数的代码,你会发现isprime是基于素数的,所以你的setdiff选项可能更有效。如果你看这些函数的代码,你会发现isprime是基于素数的,所以你的setdiff选项可能更有效。