在Matlab / octave isprime问题中分割是和不是素数的数字

时间:2014-03-12 21:07:55

标签: matlab octave primes

我在八度音程中运行了一些测试代码,发现isprime似乎不适用于小数,有没有人有解决方法。我正在尝试将数组拆分为素数而不是素数,并且数组中包含小数和整数。请参阅下面的示例代码。错误消息是 isprime:需要正整数

clear all,clf,tic
%a=(1:25)'
a=(1:0.5:25)';
b=[a,a.^2];


cprime=[];
cnoprime=[];
for ii=1:1:length(b)
    if isprime(b(ii,1))
        cprime=[cprime;(b(ii,:))];
    elseif
        cnoprime=[cnoprime;(b(ii,:))];
    endif
end

感谢 Jerad 为了让我这么远

1 个答案:

答案 0 :(得分:4)

您可以使用此功能:

floatisprime@(a)(round(a)==a)&isprime(round(a))

逻辑似乎有点奇怪,但如果值为整数(round(a)==a)并且下一个整数是素数(isprime(round(a)

,则它是素数

如果你使用上一个问题中的setdiff-idea,你就不会遇到这个问题:

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

然后迭代noprimes