我在八度音程中运行了一些测试代码,发现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 为了让我这么远
答案 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