主要是,为什么这么快(对于大数字)?该文档仅告诉我如何使用它.例如,它需要最多一秒才能找到最大的素数因子1234567890987654,对我而言,这似乎是疯狂的.
>>max(factor(1234567890987654))
ans =
69444443
Run Code Online (Sandbox Code Playgroud) 问题:根据布尔值smth,数组a必须向前或向后迭代.由于递归,必须事先处理第一个(或最后一个)元素.
在Python中,我可以通过稍微调整索引(*)来影响数组迭代的方向:
a=range(2,11,2)
sign=1
os=0
if smth:
sign=-1
os=1
print(a[sign*os]) #*
for k in range(5):
print(a[sign*(k+os)]) #*
Run Code Online (Sandbox Code Playgroud)
现在,由于MATLAB中没有负面索引,我无法找到将指令加倍的方法(简单地说是上面的"打印")并调整索引:
a=2:2:10
if smth
a(1)
for i=2:5
a(i)
end
else
a(end)
for i=4:-1:1
a(i)
end
end
Run Code Online (Sandbox Code Playgroud)
有没有办法解决这个问题,最终类似于上面的Python代码?实际指令将更长,包括多维索引的组合.
此外,在这种情况下,smth不可能在评估之后翻转阵列.