次のように指定されたシーケンスの最初の 3000 項目を計算する必要があります。
a_1=1、a_n+1 = 最小整数 > a_n、1<= i,j,k <= n+1 ごとに (必ずしも異なるわけではない) 適用される (a_i+a_j は 3*a_k と等しくない)
私は (Magma で) 正しく動作するコードを書きましたが、その時間の複雑さは明らかに大きすぎます。時間の複雑さを軽減する方法があるかどうかを尋ねています。すべての合計の配列を作成する方法で、何らかの方法で内側の for ループ (大混乱を引き起こしているループ) を移動するというアイデアがありましたが、正しく機能させることはできません。以下に私のコードを添付してください:
S:=[1];
for n:=2 to 3000 do
new:=S[n-1];
repeat
flag:=0;
new+:=1;
for i,j in S do
if (i+j eq 3*new) or (i+new eq 3*j) then
flag:=1;
break i;
end if;
end for;
until flag eq 0;
S[n]:=new;
end for;
print S[2015];
PS: 参考になれば、Python、Pascal、C などの言語も知っています。