Serwis Edukacyjny
w I-LO w Tarnowie
obrazek

Materiały dla uczniów liceum

  Wyjście       Spis treści       Wstecz       Dalej  

Autor artykułu: mgr Jerzy Wałaszek

©2020 mgr Jerzy Wałaszek
I LO w Tarnowie

Liczby parzyste i nieparzyste

SPIS TREŚCI
Podrozdziały

Problem

W przedziale całkowitym [ a, b  ] wyszukaj wszystkie liczby parzyste/nieparzyste.

Liczby parzyste

W wielu algorytmach musimy wygenerować liczby parzyste z zadanego przedziału [ a, b ] liczb całkowitych. Tego typu zadanie rozwiązujemy stosując podejście nr 2. Ponieważ granice przedziału a  i b  mogą być dowolnymi liczbami całkowitymi, musimy najpierw znaleźć najmniejszą liczbę parzystą z przedziału [ a, b ].

  1. Jeśli a  jest parzyste, to najmniejszą liczbą parzystą w tym przedziale będzie właśnie a.
  2. Jeśli a  nie jest parzyste, to najmniejszą liczbą parzystą będzie a  + 1.

Parzystość a  sprawdzimy badając resztę z dzielenia a  przez 2. Jeśli reszta jest zerowa, to a  jest liczbą parzystą. Jeśli a  nie jest liczbą parzystą, to

  1. Reszta wynosi 1 dla a  > 0
  2. Reszta wynosi -1 dla a  < 0

Z powyższego wnioskujemy, iż pierwszą liczbę parzystą w przedziale całkowitym [ a, b  ] otrzymamy następująco:

i  = a
Jeśli reszta z dzielenia a  przez 2 jest różna od 0, to zwiększ i  o 1

Następna liczba parzysta jest zawsze o 2 większa. Podsumowując otrzymujemy następujący, prosty algorytm generacji liczb parzystych w przedziale całkowitym [ a, b ]:

Algorytm generacji liczb parzystych

Wejście:

a  –   początek przedziału, a  ∈ C.
b  – koniec przedziału, b  ∈ C, a  < b.

Wyjście:

Kolejne liczby parzyste zawarte w przedziale [ a, b ]

Zmienna pomocnicza

i  –   przebiega przez kolejne liczby parzyste w przedziale [ a, b ], i  ∈ C.

Lista kroków:

K01: i  ← a obliczamy pierwszą liczbę parzystą
K02: Jeśli a  mod 2 ≠ 0,
to i  ←  i  + 1
 
K03: Dopóki i  ≤ b,
wykonuj kroki K03...K04
generujemy liczby parzyste w przedziale [ a, b ] 
K04:     Pisz i wyprowadzamy liczbę parzystą
K05:     i  ← i  + 2 następna liczba parzysta
K06: Zakończ  

Przykładowe programy

 Uwaga:

Zanim uruchomisz program, przeczytaj wstęp do tego artykułu, w którym wyjaśniamy funkcje tych programów oraz sposób korzystania z nich.

Program spodziewa się w pierwszym wierszu liczb a  i b. W kolejnych wierszach wyświetla liczby parzyste zawarte w przedziale [ a, b  ].
Pascal
// Liczby parzyste
// Data   : 11.03.2008
// (C)2020 mgr Jerzy Wałaszek
//----------------------------

program prg;

var a, b, i : longint;

begin
  readln ( a, b );
  i := a;
  if( a mod 2 <> 0 ) then inc ( i );
  while( i <= b ) do
  begin
    write ( i, ' ' );
    inc ( i, 2 );
  end;
  writeln;
end.
   C++
// Liczby parzyste
// Data   : 11.03.2008
// (C)2020 mgr Jerzy Wałaszek
//----------------------------

#include <iostream>

using namespace std;

int main( )
{
  int a, b, i;

  cin >> a >> b;
  i = a;
  if( a % 2 ) i++;
  while( i <= b )
  {
    cout << i << " ";
    i += 2;        
  }
  cout << endl;
  return 0;
}
   Basic
' Liczby parzyste
' Data   : 11.03.2008
' (C)2020 mgr Jerzy Wałaszek
'----------------------------

Dim As Integer a, b, i

Input a, b
i = a
If a Mod 2 Then i += 1
While i <= b
  Print i; " ";
  i += 2
Wend
Print
End
Wynik:
-3 15
-2 0 2 4 6 8 10 12 14
Liczby parzyste
(C)2020 mgr Jerzy Wałaszek

a =
b =


...

Na początek:  podrozdziału   strony 

Liczby nieparzyste

Liczby nieparzyste generujemy w identyczny sposób: wyznaczamy pierwszą liczbę nieparzystą w przedziale [a, b ], a kolejne są o 2 większe. Jeśli a  jest nieparzyste, to pierwsza liczba nieparzysta jest równa a, w przeciwnym razie jest o 1 większa.

Poniższy program czyta krańce przedziału [a, b ] i wyświetla wszystkie kolejne liczby nieparzyste zawarte w tym przedziale.


Przykładowe programy

 Uwaga:

Zanim uruchomisz program, przeczytaj wstęp do tego artykułu, w którym wyjaśniamy funkcje tych programów oraz sposób korzystania z nich.

Program spodziewa się w pierwszym wierszu liczb a  i b.
Pascal
// Liczby nieparzyste
// Data   : 11.03.2008
// (C)2020 mgr Jerzy Wałaszek
//----------------------------

program prg;

var a, b, i : longint;

begin
  readln ( a, b );
  i := a;
  if( a mod 2 = 0 ) then inc ( i );
  while( i <= b ) do
  begin
    write ( i, ' ' );
    inc ( i, 2 );
  end;
  writeln;
end.
   C++
// Liczby nieparzyste
// Data   : 11.03.2008
// (C)2020 mgr Jerzy Wałaszek
//----------------------------

#include <iostream>

using namespace std;

int main( )
{
  int a, b, i;

  cin >> a >> b;
  i = a;
  if( a % 2 == 0 ) i++;
  while( i <= b )
  {
    cout << i << " ";
    i += 2;        
  }
  cout << endl;
  return 0;
}
   Basic
' Liczby nieparzyste
' Data   : 11.03.2008
' (C)2020 mgr Jerzy Wałaszek
'----------------------------

Dim As Integer a, b, i

Input a, b
i = a
If a Mod 2 = 0 Then i += 1
While i <= b
  Print i; " ";
  i += 2
Wend
Print
End
Wynik:
-10 10
-9 -7 -5 -3 -1 1 3 5 7 9
Liczby nieparzyste
(C)2020 mgr Jerzy Wałaszek

a =
b =


...

Na początek:  podrozdziału   strony 

Zespół Przedmiotowy
Chemii-Fizyki-Informatyki

w I Liceum Ogólnokształcącym
im. Kazimierza Brodzińskiego
w Tarnowie
ul. Piłsudskiego 4
©2020 mgr Jerzy Wałaszek

Materiały tylko do użytku dydaktycznego. Ich kopiowanie i powielanie jest dozwolone
pod warunkiem podania źródła oraz niepobierania za to pieniędzy.

Pytania proszę przesyłać na adres email: i-lo@eduinf.waw.pl

Serwis wykorzystuje pliki cookies. Jeśli nie chcesz ich otrzymywać, zablokuj je w swojej przeglądarce.
Informacje dodatkowe.