liczby fermata

0

Witam,

czy mogę prosić o pomoc w przerobieniu kodu Delphi na taki, aby program po podaniu przedzialu wyswietlil wszystkie liczby fermata?

program liczby_fermata;
 
{$APPTYPE CONSOLE}
 
function Potega(Podst, Wykl : integer) : integer;
var
  i, Wynik : Integer;
begin
  Wynik := 1;
  for i := 1 to Wykl do
    Wynik := Wynik * Podst;
  Potega := Wynik;
end;
 
function CzyPierwsza(Liczba : integer) : boolean;
var
  I : integer;
begin
  CzyPierwsza := True;
  for I := 2 to Liczba - 1 do
  begin
    if Liczba mod I = 0 then
    begin
      CzyPierwsza := False;
      Break;
    end;
  end;
end;
 
function LiczbaFermata(N : Byte) : Cardinal;
begin
  LiczbaFermata := Potega(2, Potega(2, N)) + 1;
end;
 
const
  Max = 4;
var
  I : Cardinal;
begin
  for I := 1 to Max do
    if CzyPierwsza(I) = True then
      Writeln('  ', I, ' jest liczba pierwsza (licza Fermata: ', LiczbaFermata(I), ').');
  Readln;
end.
0

A próbowałeś chociaż wczytać ten zakres ?
Podpowiedź: jak już będziesz miał wczytany zakres użyj pętli for.

0
  1. Nie jest Ci potrzebna funkcja CzyPierwsza, (ta którą podałeś woła o pomstę do nieba).
  2. Po obliczeniu kolejnej liczby Fermata lf, sprawdzasz czy leży ona w przedziale (lf>=lewyKoniec i lf<=górnyKoniec).
0

Nie bardzo wiem jak to zrobić, ponieważ jestem bardzo poczatkujacy jeżeli chodzi o delphi.

0

wszystkie liczby F czy tylko liczby pierwsze F?
i-ta liczba F. to 1 shl (1 shl i)+1
w typie cardinal "zmieszczą" się tylko te dla i<5

1 użytkowników online, w tym zalogowanych: 0, gości: 1