C Pronic Number Program

Beginner
6 min read
Updated: Oct 2026
2 programs
Live preview

What Is a Pronic Number?

A pronic number (also called oblong or rectangular) is the product of two consecutive integers:

Remember
n = k × (k + 1)   for some integer k ≥ 0

Examples: 0, 2, 6, 12, 20, 30, 42, ...
12 = 3 × 4
20 = 4 × 5
nFormPronic?
123 × 4Yes
00 × 1Yes
93 × 3 (not consecutive)No
1—No

How to Check a Pronic Number in C

Four clear steps — then reuse the helper to list pronic numbers in a range.

  1. If n < 0, return false (this tutorial uses non-negative n).
  2. Start k = 0.
  3. While k × (k + 1) ≤ n, if the product equals n, return true.
  4. If the product passes n with no match, return false.
MethodIdeaTimeBest for
Loop on kTry products until > nO(√n)Single check (default)
Range scanCall is_pronic for each valueO(N√N)Listing pronic 0..N

Pseudocode

Pseudocode
function IsPronic(n):
    if n < 0: return false

    k = 0
    while k * (k + 1) <= n:
        if k * (k + 1) == n:
            return true
        k = k + 1

    return false

Cheat Sheet

Keep these facts handy while writing the program.

TopicDetail
Definitionn = k × (k + 1) for integer k ≥ 0
Also calledOblong / rectangular numbers
0Pronic (0 × 1)
1 and 9Not pronic
EvennessFor k ≥ 1, product is always even
Classic checks12 yes; 20 yes; 9 no

Live Preview

Enter an integer to try consecutive products until they pass n.

Whole numbers only. Tap a chip or type a value.

Result
n = 12
Try k = 0, 1, 2, 3, ...
3 × 4 = 12
12 is pronic

Worked Walkthrough — n = 12

Try consecutive products until one matches or passes 12.

Calculation
k = 0 → 0 × 1 = 0
k = 1 → 1 × 2 = 2
k = 2 → 2 × 3 = 6
k = 3 → 3 × 4 = 12  ✓ match

12 is pronic

Counterexample n = 9:
k = 2 → 6
k = 3 → 12 (> 9) → no match → not pronic

C Programs

Start with a reusable is_pronic helper. Then print every pronic number in a small range with the same helper.

Example 1 — is_pronic Check

Return true when some consecutive product equals n.

C
#include <stdio.h>

int is_pronic(int n)
{
    long k;

    if (n < 0)
        return 0;

    for (k = 0; k * (k + 1) <= n; k++)
    {
        if (k * (k + 1) == n)
            return 1;
    }

    return 0;
}

int main(void)
{
    int number = 12;

    if (is_pronic(number))
        printf("%d is pronic\n", number);
    else
        printf("%d is not pronic\n", number);

    return 0;
}

How It Works

  1. Negative values are rejected first.
  2. The loop grows k while k × (k + 1) stays ≤ n.
  3. Equality means two consecutive factors were found.
  4. If the product jumps past n, no match exists.
  5. For 12, k = 3 gives 3 × 4, so the answer is true.

Example 2 — Pronic Numbers in a Range

Reuse is_pronic to print every pronic value from 0 to 30.

C
#include <stdio.h>

int is_pronic(int n)
{
    long k;

    if (n < 0)
        return 0;

    for (k = 0; k * (k + 1) <= n; k++)
    {
        if (k * (k + 1) == n)
            return 1;
    }

    return 0;
}

int main(void)
{
    int start = 0;
    int end = 30;
    int i;

    printf("Pronic numbers from %d to %d:\n", start, end);
    for (i = start; i <= end; i++)
    {
        if (is_pronic(i))
            printf("%d ", i);
    }
    printf("\n");

    return 0;
}

How It Works

  1. Same is_pronic helper keeps the rule in one place.
  2. The outer loop visits every integer from start to end.
  3. Only values that pass the helper are printed.
  4. 0 is included because 0 × 1 = 0.
  5. For larger ranges, generate products directly with k++ instead of scanning every i.

Edge Cases & Pitfalls

Check these before calling the solution done.

0

Zero is pronic

0 × 1 = 0 — do not reject zero by habit.

Squares

Not the same

9 = 3 × 3 is a square, not consecutive factors.

Overflow

Watch large k

For big n, prefer long so k * (k + 1) does not wrap.

Negatives

Out of scope

This tutorial treats only non-negative inputs as candidates.

Time and Space Complexity

ProgramTimeExtra space
is_pronic (loop on k)O(√n)O(1)
Pronic in range 0..NO(N√N)O(1)

Because k × (k + 1) ≈ k², the loop stops near √n. Generating products with k++ is faster for long ranges.

Key Takeaways

  • Definition: n = k × (k + 1) for some integer k ≥ 0.
  • Check: try products until they pass n.
  • Facts: 0 is pronic; squares like 9 are not automatically pronic.
  • Test set: 12 → yes; 20 → yes; 9 → no; 1 → no.

One line: if some consecutive pair multiplies to n, n is pronic.

Frequently Asked Questions

A pronic number equals k × (k + 1) for some integer k ≥ 0. Examples: 0, 2, 6, 12, 20, 30.
Yes. 0 = 0 × 1.
No. No integer k satisfies k × (k + 1) = 1.
Among any two consecutive integers, one is even, so their product is even.
A loop that tries k while k × (k + 1) ≤ n runs in O(√n) time and O(1) extra space.

Next: Smith Number

Compare digit sums with prime-factor digit sums.

Smith number tutorial →

About the author

Mari Selvan M P
Mari Selvan M P 🔗

Developer, cloud engineer, and technical writer

  • Experience 12 years building web and cloud systems
  • Focus Full Stack Development, AWS, and Developer Education

I write practical tutorials so students and working developers can learn by doing—from databases and APIs to deployment on AWS.

10 people found this page helpful