【发布时间】:2011-11-30 04:47:39
【问题描述】:
此代码需要很长时间才能运行(超过 10 分钟)。有什么方法可以优化它,使其在不到一分钟的时间内完成?
clear all;
for i = 1:1000000
harmonicsum = 0;
lhs = 0;
for j = 1:i
% compute harmonic sum
harmonicsum = harmonicsum + 1/j;
% find sum of factors
if (mod(i,j)==0)
lhs = lhs + j;
end
end
%define right hand side (rhs) of Riemann Hypothesis
rhs = harmonicsum + log(harmonicsum) * exp(harmonicsum);
if lhs > rhs
disp('Hypothesis violated')
end
end
【问题讨论】:
-
关键不是问“N的因数是什么”,而是“有哪些数有
j作为因数”,这样容易多了。
标签: performance matlab vectorization