以下のコードを高速化したい。実行に時間がかかり、次のエラーが発生しました。
警告: FOR ループ インデックスが大きすぎます。2147483647 に切り捨てます。
3^100以上の計算をしなければならないので・・・無理ですか?
function sodiv = divisorSum(n)
sodiv = 0;
for i=1:n
if (mod(n,i) == 0)
sodiv = sodiv + i;
end
end
end
function finalSum1 = formular1(N,n)
finalSum1 = 0;
for k = 1:N
finalSum1 = finalSum1 + (divisorSum(k) * divisorSum(3^n*(N-k)));
end
end
Nv=100;
nv=[1:20];
for i=1:length(nv)
tic;
nfunc1(i)=formular1(Nv,nv(i));
nt1(i)=toc;
sprintf('nt1 : %d finished, %f', i,nt1(i))
end
このコードの目的は、アルゴリズムの計算時間をチェックすることです。