44 lines
922 B
Matlab
44 lines
922 B
Matlab
% Displaying EKG sequences and the convergence point
|
|
for i = [2, 5, 7, 9, 10]
|
|
ekg = ekgsequence(i, 30);
|
|
fprintf('EKG(%d): %s\n', i, num2str(ekg));
|
|
end
|
|
|
|
convergencePoint = convergeat(5, 7);
|
|
fprintf('EKGs of 5 & 7 converge at term %d\n', convergencePoint);
|
|
|
|
|
|
|
|
function ekg = ekgsequence(n, limit)
|
|
ekg = [1, n];
|
|
while length(ekg) < limit
|
|
for i = 2:2^18
|
|
if all(ekg ~= i) && gcd(ekg(end), i) > 1
|
|
ekg = [ekg, i];
|
|
break;
|
|
end
|
|
end
|
|
end
|
|
end
|
|
|
|
function point = convergeat(n, m, max)
|
|
if nargin < 3
|
|
max = 100;
|
|
end
|
|
|
|
ekgn = ekgsequence(n, max);
|
|
ekgm = ekgsequence(m, max);
|
|
|
|
point = 0;
|
|
for i = 3:max
|
|
if ekgn(i) == ekgm(i) && sum(ekgn(1:i+1)) == sum(ekgm(1:i+1))
|
|
point = i;
|
|
return;
|
|
end
|
|
end
|
|
|
|
if point == 0
|
|
warning('No convergence in %d terms', max);
|
|
end
|
|
end
|