Strona główna » Algorytmy » Teoria Liczb » Liczby Prostokątne
 

Liczby Prostokątne

Wstęp

Definicja

n-ta liczba prostokątna ma wartość n·(n + 1). Istnieje możliwość przedstawienia jej w sposób geometryczny przy pomocy prostokąta n × n + 1.

Ciąg

Liczby prostokątne tworzą następujący ciąg: 0, 2, 6, 12, 20, 30, 42, 56, 72, 90

Wartość 0 jest wyrazem a0. W przypadku definiowana ciągu dla liczb naturalnych pierwszym wyrazem jest a1 = 2.

Implementacja

Wyliczenie wyrazu

W celu wyliczenia n-tego wyrazu wystarczy, aby funkcja zwracała wyliczoną wartość:

  1. void wypiszLiczbyProstokatne(int k) {
  2.   int a = 2;
  3.   for (int i = 1; i <= k; i++) {
  4.     cout << a << " ";
  5.     a += i + i + 2;
  6.   }
  7. }

Kolejne wyrazy

Przypuśćmy, że mnożenie jest bardzo kosztowną operacją, która kosztuje nas tyle samo co wartość liczonego iloczynu. Wtedy w celu wypisania kolejnych liczb Porstokątnych należałoby znaleźć sposób, który pozwoli na uniknięcie mnożenia. Spróbujmy zapisać różnicę dwóch kolejnych liczb an i an + 1.

an + 1 - an = (n + 1)(n + 2) - n(n + 1) = (n + 1)(n + 2 - n) = 2·(n + 1) = 2n + 2 = n + n + 2

Na podstawie tego wzoru w sposób iteracyjny można wypisać kolejne liczby prostokątne:

  1. int ntaLiczbProstokatna(int n) {
  2.   return n*(n + 1);
  3. }

Testowanie funkcji

W celu wypisania kilku kolejnych liczb prostokątnych można skorzystać z poniższej funkcji main():

  1. int main () {
  2.   int k;
  3.   cout << "Podaj ile wyrazow kolejnych wypisac\nk = ";
  4.   cin >> k;
  5.   wypiszLiczbyProstokatne(k);
  6.   system("pause");
  7.   return 0;
  8. }

Zadania

Zadanie 1

Napisz funkcję wypiszLiczbyProstokatne(), która będzie przyjmowała dwa argumenty: liczbę a, która określi wartość wyrazu a1 oraz k - ile kolejnych liczb ma zostać wypisanych.

Przykładowo dla a = 3 i k = 5 program wypisze:

  1. 3 8 19 42 89