program GenerovaniCisel; {Nalezeni prvnich N cisel z mnoziny M definovane pravidly: a) 1 je z M b) kdyz x je z M, pak 2x+1 a 3x+1 jsou z M c) zadne jine cislo nepatri do M Postup: prime generovani na zaklade znalosti predchozich} const MaxN = 100; {max. mozna hodnota N} var M: array[1..MaxN] of integer; {ulozeni prvku z M} N: integer; {pocet hledanych cisel} I, J, K: integer; HI, HJ, HK: integer; begin write('Pocet cisel: '); readln(N); M[1] := 1; write(1:5); {prvni cislo mnoziny z M} J := 1; HJ := 3; K := 1; HK := 4; for I:=2 to N do begin if HJ < HK then HI := HJ else HI := HK; M[I] := HI; {HI je hodnota v poradi I-teho cisla z M} write(HI:5); {vytiskneme I-te cislo z mnoziny M} if HI = HJ then begin J := J + 1; {posunuti indexu J} HJ := 2 * M[J] + 1 end; if HI = HK then begin K := K + 1; {posunuti indexu K} HK := 3 * M[K] + 1 end end; writeln end.