Первая задача:
В цикле собираем число (в строку, потом из строки в Integer) и проверяем его на то, что оно не делится ни на что, кроме 1 и самого себя).
Где-то так:
Код:
function IsNatural(A : Integer) : Boolean;
begin
Result := True;
For I := 2 To A-1 Do
Begin
Result := A mod I <> 0;
If Not Result Then Break;
End;
end;
function GetNatural(MaxNatural : Integer) : Integer;
var
N : Integer;
K : Integer;
begin
Result := 0;
N := 0;
K := 0;
While N < MaxNatural Do
Begin
Inc(K);
If K > 9 Then Break;
Buf := '';
For I := 1 To K Do
Buf := Buf + Inttostr(I);
N := StrToInt(Buf);
If IsNatural(N) Then Result := N;
End;
end;
Код не проверял, просто сама логика.
Вторая задача
Код:
var
A : Array [1..20,1..20] Of Integer;
procedure CheckMatrix;
var
I, J : Integer;
begin
// По столбцам
For I := 1 To 20 Do
For J := 1 To 20 Do
If A[I,J] = 0 Then
Begin
A[I,I] := 0;
Break;
End;
// По строкам
For I := 1 To 20 Do
For J := 1 To 20 Do
If A[J,I] = 0 Then
Begin
A[J,J] := 0;
Break;
End;
end;
Третья задача
Фибоначчи
Код:
function GetFib(K : Integer) : Boolean;
begin
If K < 3
Then Result := 1
Else Result := GetFib(K-1) + GetFib(k-2);
end;
Натуральные (тут придется работать с памятью).
Код:
var
NaturalArray : Array Of Integer;
function IsNatural(A : Integer) : Boolean;
begin
Result := True;
For I := 2 To A-1 Do
Begin
Result := A mod I <> 0;
If Not Result Then Break;
End;
end;
function GetNatural(K : Integer) : Integer;
var
N : Integer;
begin
If K < Length(NaturalArray)
Then Result := NaturalArray[K-1] // Динамичский масив начинается с 0
Else
Begin
N := NaturalArray[High(NaturalArray)];
While Length(NaturalArray) < K Do
Begin
Inc(N);
If IsNatural(N) Then
Begin
SetLength(NaturalArray,Length(NaturalArray)+1);
NaturalArray[High(NaturalArray)] := N;
End;
Result := NaturalArray[High(NaturalArray)];
End;
end;