Вычисление фигурных чисел


Фигурные числа - это числа, из которых можно составить правильную геометрическую
фигуру - треугольник, четырехугольник и т.д. Соответственно фигуре такие числа
называются треугольными, квадратными и т.п. Есть много интересных математических
закономерностей, связанных с фигурными числами, а также их суммами, произведениями
и разложениями. Эти закономерности можно поискать в математических учебниках и 
на Википедии.

/*///////////////////////////////////////////////////////////////

 Фигурные числа, GNU C++, 2011-01-24
 
 Artix, master@7masterov.ru, icq:53666599, skype:artixmaster
 
 * Error in code? Nothing is perfect!
 * Free source for free Linux, use it for free!
 * Please, do not remove this comment!

///////////////////////////////////////////////////////////////*/

#include <iostream>

using namespace std;

const int N = 5;

// Треугольные числа
// 1, 3, 6, 10, 15, 21, 28, 36, 45, 55
long f3(long n)
{
    return n*(n+1)/2;
}

// Квадратные числа
// 1, 4, 9, 16, 25, 36, 49, 64, 81, 100
long f4(long n)
{
    return n*n;
}

// Пятиугольные числа
// 1, 5, 12, 22, 35, 51, 70, 92, 117
long f5(long n)
{
    return n*(3*n-1)/2;
}

// Шестиугольные числа
// 1, 6, 15, 28, 45, 66, 91, 120, 153
long f6(long n)
{
    return 2*n*n-n;
}

// Общий случай
long f(long n, int base)
{
    return n*((base-2)*(n-1)+2)/2;
}

int main()
{
    cout << "f3()" << endl;
    for(long i=1;i<=N;i++) cout << f3(i) << endl;

    cout << endl << "f4()" << endl;
    for(long i=1;i<=N;i++) cout << f4(i) << endl;

    cout << endl << "f5()" << endl;
    for(long i=0;i<=N;i++) cout << f5(i) << endl;

    cout << endl << "f6()" << endl;
    for(long i=0;i<=N;i++) cout << f6(i) << endl;

    cout << endl << "f(8)" << endl;
    for(long i=0;i<=N;i++) cout << f(i,8) << endl;

    return 1;
}
// eof