Liczby pierwsze i kolejność cyfr

0

Mam taki problem: jak wyznaczyć wszystkie liczby pierwsze z zakresu 1-1000000 i spośród nich wypisać tylko te, które są zbudowane w ten sposób, że każda następna cyfra w liczbie jest o jeden większa od poprzedniej. Np. 23, 67, 4567.

0

Sito Eratostenesa + IntToStr + sprawdzanie prostego warunku.

0

Witam, w sumie rozwiazanie latwe :), wyrzezbilem cos takiego:

const

MAXLICZBA = 1000000;

var
  Form1   : TForm1;
  wynik   : array[1..MAXLICZBA div 3] of integer;
  Liczba  : array[1..15] of char;
  dlugosc : byte;
  ILE     : integer = 0;


implementation

procedure LiczbyPierwsze;
var
 i, j    : integer;
 ok      : boolean;
 lancuch : string[15];

begin
               // od 10 bo wiadomo, ze  2, 3, 5, 7 sa l. pierwszymi
   for i := 10 to MAXLICZBA do
                // sprawdz czy liczba jest pierwsza (wykorzystaj pewne cechy)
       if ((i mod 2) <> 0) and ((i mod 3) <> 0) and
          ((i mod 5) <> 0) and ((i mod 7) <> 0) then
                    // jesli jest to sprawdz czy cyfry sa kolejno wieksze
              begin    // wykorzystaj konwersje int na str
                lancuch  := IntToStr(i);
                dlugosc := length (lancuch);
                for j := 1 to dlugosc do
                 Liczba[j] := lancuch[j];
                ok := true;
                for j := 1 to dlugosc - 1 do
                  if Ord(Liczba[j + 1]) - Ord(Liczba[j]) <> 1 then// miala byc wieksza o1
                    begin                                                 
                     ok := false;
                     break;
                    end;
                if ok then

                  begin

                    Inc (ILE);
                    Wynik[ILE] := i;

                  end;
              end;


end;

dla twojego zakresu procedura wyrzuca takie liczby:

23
67
89
4567
34567
56789

                                                                pozdrawiam

// ŁF dzieki za info, kodzik juz poprawilem ... nie wczytalem sie w tresc :)

0

dRum: to teraz popatrz na swoje wyniki, i na definicję problemu, i zobacz że jedno nie odpowiada drugiemu,

0

Hej dzięki. Dokładnie o to mi chodziło ;)

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