ここで奇妙なエラーが発生します。この関数は、単純に数値の適切な約数を見つけて返します。
function [divisors] = SOEdivisors(num)
%SOEDIVISORS This function finds the proper divisors of a number using the sieve
%of eratosthenes
%check for primality
if isprime(num) == 1
divisors = [1];
%if not prime find divisors
else
divisors = [0 2:num/2]; %hard code a zero at one.
for i = 2:num/2
if divisors(i) %if divisors i ~= 0
%if the remainder is not zero it is a divisor
if rem(num, divisors(i)) ~= 0
%remove that number and all its multiples from the list
divisors(i:i:num/2) = 0;
end
end
end
%add 1 back and remove all zeros
divisors(1) = 1;
divisors = divisors(divisors ~= 0);
end
end
私が受け取るエラーは次のとおりです。
Integer operands are required for colon operator when used as index
23行目を指します。
23行目は
divisors(i:i:num/2) = 0;
しかし、I i と num は両方とも整数でなければなりません... i が整数であることはわかっています。でもやってみても
num = int8(num)
またはそのようなもの、私はまだエラーが発生します。
読んでくれてありがとう!