Hendecagonal Number In C++

Introduction

Numbers have interested mathematicians and programmers since time eternal. One of several interesting sequences is hendecagonal numbers , which are notable due to their geometric significance. The numbers represent an 11-gon or an 11-sided figure (a hendecagon) and can be described as a generalization of triangular, pentagonal, and hexagonal numbers.

In this article, we will discuss hendecagonal numbers, why they are important, and how they may be applied in C++. We will attempt to provide simple, practical explanations with few formulas while keeping them comprehensible.

What are Hendecagonal Numbers?

Hendecagonal numbers are figurate numbers representing an 11-sided figure. They grow in a particular manner as we move along the series.

If we imagine a hendecagon (11-sided figure) and mark dots within it in a pattern, we can create a series of hendecagonal numbers. The initial few hendecagonal numbers are:

1, 11, 30, 58, 95, 141, 196, 260, 333, 415...

Each number in this sequence follows a particular progression where new dots are added in an expanding hendecagon.

Properties of Hendecagonal Numbers:

Several properties of Hendecagonal Numbers in C++ are as follows:

  • The series increases very fast, i.e., every number is much greater than the preceding number.
  • They may be applied to tiling and geometric research.
  • They have properties that can be applied to some number theory questions.
  • Hendecagonal numbers are part of the family of polygonal numbers, a large family of numbers defined geometrically.
  • Hendecagonal Number Implementation in C++

We will now create a C++ program to print and produce hendecagonal numbers. We will produce the sequence through a basic iterative approach.

Example

#include <iostream>
using namespace std;

// Function to generate the nth hendecagonal number
int hendecagonalNumber(int n) {
    return (9 * n * n - 7 * n) / 2;
}

int main() {
    int terms;
    cout << "Enter the number of hendecagonal numbers to generate: ";
    cin >> terms;
    
    cout << "Hendecagonal Numbers: ";
    for (int i = 1; i <= terms; i++) {
        cout << hendecagonalNumber(i) << " ";
    }
    cout << endl;
    
    return 0;
}

Output:

Explanation:

Hendecagonal numbers are a sequence of polygonal numbers, a generalized set of numbers that are mathematically defined geometrically.

  • Definition of Function : Function ‘hendecagonalNumber(int n)’ calculates the nth hendecagonal number using an expression.
  • Input by User: The user, asking for the number of terms, takes the input.
  • Loop Iteration: A loop execution is performed to iterate and print the hendecagonal numbers of the input number.
  • Display: Successive numbers are printed.
  • Efficient Solution with Dynamic Programming

For big ‘n’, excessive recalculation of the formula may be wasteful. We can store the calculated values by using a dynamic programming method so that we can prevent redundant recalculation in C++ .

We will now construct a C++ program for their printing and computation. We will calculate the sequence by straightforward iteration.

Example

#include <iostream>
#include <vector>
using namespace std;

void generateHendecagonalNumbers(int terms) {
    vector<int> hNumbers(terms);
    
    for (int i = 1; i <= terms; i++) {
        hNumbers[i - 1] = (9 * i * i - 7 * i) / 2;
    }
    
    cout << "Hendecagonal Numbers: ";
    for (int num : hNumbers) {
        cout << num << " ";
    }
    cout << endl;
}

int main() {
    int terms;
    cout << "Enter the number of hendecagonal numbers to generate: ";
    cin >> terms;
    generateHendecagonalNumbers(terms);
    return 0;
}

Output:

Why Use Dynamic Programming?

  • It prevents repeated calculations through the storage of calculated values.
  • It improves performance for the construction of large sequences.
  • It uses arrays (or vectors ) to store results efficiently.
  • Applications of Hendecagonal Numbers:

Hendecagonal numbers, while less frequently spoken of than prime or Fibonacci numbers, possess special mathematical characteristics and uses:

  • Geometry and Tessellations: It is used in the creation of patterns and tessellations.
  • Mathematical Proof: It occurs in certain problems of number theory.
  • Computer Graphics : It can be used to create polygon-based buildings.
  • Simulations and Games: Employed to compute ordered placement in grid games.
  • Expanding the Concept:

If we would like to hear more, we can:

  • Adapt the code to determine whether a given number is a hendecagonal number.
  • Recursively generate hendecagonal numbers rather than iteratively.
  • Graph the numbers to see the growth of the series.

Here is a simple function to verify whether a number is hendecagonal:

Example

#include <iostream>
#include <cmath>
using namespace std;

bool isHendecagonal(int num) {
    int n = (1 + sqrt(1 + 36 * num)) / 9;
    return ((9 * n * n - 7 * n) / 2) == num;
}

int main() {
    int num;
    cout << "Enter a number to check if it's a hendecagonal number: ";
    cin >> num;
    
    if (isHendecagonal(num))
        cout << num << " is a hendecagonal number." << endl;
    else
        cout << num << " is NOT a hendecagonal number." << endl;
    
    return 0;
}

Output:

Conclusion:

In conclusion, hendecagonal numbers are a very fascinating subject of study in number theory and computer programming. It is not such a widely used topic, but it is so fascinating that it is a very fascinating field to study. In this article, we:

  • Conducted research on the subject of hendecagonal numbers.
  • Prepared them using a C++ program.
  • Improved the solution using dynamic programming.
  • Researched actual uses of such numbers.

Input Required

This code uses input(). Please provide values below: