题目:
来源于Mathwork上的Cody,Problem 84 - Longest Divisor Run,
想得比较复杂了,下面画个简图帮助理解下,
代码,
function [len,d] = divisor_run(a)
for j=1:length(a)-1
D(1,j)=gcd(a(j),a(j+1));
end
for i=2:length(a)-1
for j=1:length(a)-i
D(i,j)=gcd(D(i-1,j),D(i-1,j+1));
end
end
[row,col]=find(D>1);
[A,I]=max(row);
len=A+1;
d=D(row(A),col(I));
end
测试,
>> clear;a=[5 4 2 8 3 7 14];[len,d] = divisor_run(a)
len =
3
d =
2
>> clear;a = [166 553 1241 869 237 395 1079 1577];[len,d] = divisor_run(a)
len =
3
d =
79
PS:看看人家的代码,再看看自己的,感觉要多学习学习了。。。