
Помогите с программкой для нахождения периода псевдослучайной последовательности.
Моя программка вычитывает последовательность чисел из файла, помещает их в Memo, затем должен найти есть ли период и какова его длина. Я начала реализацию вот так:
var i,j,k:integer;
q,t:integer;
n:integer;
e:array[1..100] of integer;
begin
n:=Memo1.Lines.Count;
for i:=1 to n do
begin
e:= StrToInt(Memo1.Lines.Strings[i-1]);
end;
begin
k:=1;
for i:=1 to n do
begin
for j:=2 to n do
if e = e[j]
then
for q:=i+1 to j-1 do
begin
t:=j+1;
if (e[q] = e[t]) then
k:=k+1;
inc(t);
end
else Continue;
end;
end;
Memo2.Lines.Add('dlina perioda: '+IntToStr(k));
Memo2.Lines.Add('period: ');
for i:=1 to k do
Memo2.Lines.Add(IntToStr(e));
end;
end.
Но для последовательности (возмем простую последовательность) 1584015840 он находит правильно длина - 5 а период - 15840. А если перид повторяется >3 раз (напр., 123412341234) то появляются непонятные цифры. (ответ для этой посл. длина 4, период 1234).