Why n? Why not x, m, k, or any other letter?
If you've studied mathematics, algorithms, or programming, you've probably seen something like:
1, 2, 3, ..., n
or:
for i in range(n):
print(i)
or:
O(n)
or:
a₁, a₂, a₃, ..., aₙ
At some point, you may have wondered:
Why does everyone use
n?
Is n an infinity symbol?
Is n a special mathematical number?
Does n actually mean “infinite”?
Why not x?
Why not k?
Why not z?
The interesting answer is:
ndoes not mean infinity.
It usually represents a general positive integer, a size, a count, or an unspecified number of elements.
And the reason it became so common is a mixture of mathematical convention, historical notation, and practical computer science usage.
Let's unpack the story.
♾️ First: n Does NOT Mean Infinity
This is the most important correction.
When you see:
1, 2, 3, ..., n
n simply means:
some final integer value.
For example, if:
n = 5
then:
1, 2, 3, ..., n
means:
1, 2, 3, 4, 5
If:
n = 1,000,000
then it means:
1, 2, 3, ..., 1,000,000
n itself is finite unless the problem explicitly defines something else.
Infinity is normally represented by:
∞
not:
n
🧠 So What Does n Actually Represent?
In mathematics, n is commonly used for a natural number or a general integer.
For example:
n ∈ ℕ
means:
nbelongs to the natural numbers.
Depending on the mathematical convention being used, natural numbers may begin at:
0, 1, 2, 3, ...
or:
1, 2, 3, ...
Different fields and authors use slightly different conventions.
But the important idea is:
n = an unspecified number
🔢 Why n Specifically?
This is where things get interesting.
There isn't a single universally documented moment when someone officially declared:
“From today onward,
nshall mean number.”
Mathematical notation evolved over centuries.
Different mathematicians used different letters for different purposes.
Eventually, conventions became widespread because they were:
- convenient
- easy to remember
- repeatedly used in textbooks
- adopted by later mathematicians
- standardized through mathematical practice
So n became strongly associated with number, count, or an arbitrary integer.
One commonly cited explanation connects n with words such as:
number
and with historical notation traditions involving integer variables.
But we should be careful here:
It would be inaccurate to claim that the entire mathematical community adopted n because one specific person officially chose it for the word “number.”
Notation evolved rather than being created by one universal naming decision.
📚 A Short History of Mathematical Variables
Mathematics didn't always look like this:
f(n) = n² + 1
Ancient mathematical writing often used words instead of compact symbolic notation.
Modern algebraic notation developed gradually.
Different civilizations contributed important ideas:
Ancient Babylonian mathematics
↓
Greek mathematics
↓
Indian mathematics
↓
Islamic Golden Age
↓
European mathematical notation
↓
Modern algebra
↓
Modern mathematics
The notation we use today is the result of centuries of development.
🇮🇳 India's Contribution Matters Here
If you're interested in the history of mathematics, the development of zero and positional notation in India is particularly important.
Indian mathematicians developed sophisticated numerical systems and mathematical techniques.
The concept of zero became an actual number with arithmetic rules in Indian mathematics.
The work of mathematicians such as Brahmagupta was especially influential in the mathematical treatment of zero.
This eventually contributed to the numerical system that became foundational to modern mathematics.
So when we write:
0, 1, 2, 3, ...
there is a very long history behind that simple sequence.
🌍 From Words to Symbols
As mathematics developed, using complete words became inefficient.
Imagine writing:
The number of elements in the collection is an arbitrary natural number.
every time.
Instead:
n
Much easier.
Mathematical notation works partly like a programming language.
It compresses complicated ideas into symbols.
For example:
Σ
can represent summation.
∫
represents integration.
∞
represents infinity.
And:
n
can represent an arbitrary integer or count.
💻 Then Programming Adopted the Convention
Computer science inherited a huge amount of notation from mathematics.
That's why programmers frequently write:
for i in range(n):
...
Here:
n = number of iterations
For example:
n = 5
for i in range(n):
print(i)
Output:
0
1
2
3
4
Here:
n = 5
It does not mean infinity.
It means the size or limit of the loop.
🧮 Why O(n)?
This is probably where most programmers first encounter n.
Suppose we have:
def print_items(items):
for item in items:
print(item)
If the list contains:
10 items
the loop runs approximately:
10 times
If it contains:
1,000 items
the loop runs approximately:
1,000 times
If it contains:
1,000,000 items
the loop runs approximately:
1,000,000 times
So we describe the growth as:
O(n)
Here:
n= input size.
It doesn't mean:
“the program runs forever.”
It means:
“the amount of work grows approximately in proportion to the size of the input.”
🔥 Example: O(n)
def find_number(numbers, target):
for number in numbers:
if number == target:
return True
return False
If:
n = number of elements
the algorithm may inspect:
1 element
10 elements
100 elements
1,000 elements
...
depending on the input.
Worst-case work grows linearly with n.
Therefore:
Time Complexity = O(n)
🧠 Why Not x?
We absolutely can use x.
For example:
x = 10
is perfectly valid.
But x already has common mathematical roles.
For example:
y = f(x)
Here x often represents an input variable.
Similarly:
(x, y)
often represents coordinates.
So using n for a count helps communicate meaning.
Compare:
for i in range(x)
with:
for i in range(n)
The second convention immediately suggests:
nis probably some number or size.
Variable names communicate intent.
🧩 Why Not k?
Actually, k is also extremely common.
You will often see:
O(n log n)
where:
n = input size
and:
k = some other parameter
For example:
n = total elements
k = number of selected elements
Consider:
Find the largest k elements from n elements.
Then:
n = total input size
k = requested number of results
Using different letters prevents ambiguity.
🔠 Why Not m?
m is also frequently used.
A classic example is a matrix:
A is an m × n matrix
Here:
m = number of rows
n = number of columns
So:
m × n
means:
m rows
n columns
This convention is common enough that many programmers immediately understand it.
But again:
these are conventions, not laws of mathematics.
You could define:
A is an x × y matrix
and mathematically it would still work.
📐 n in Sequences
You'll frequently see:
a₁, a₂, a₃, ..., aₙ
This means:
first element
second element
third element
...
nth element
For example:
aₙ = 2n
Then:
a₁ = 2
a₂ = 4
a₃ = 6
a₄ = 8
Here n is essentially an index.
∑ n in Summation
Consider:
Σᵢ₌₁ⁿ i
This means:
1 + 2 + 3 + ... + n
For:
n = 5
we get:
1 + 2 + 3 + 4 + 5 = 15
Again:
n = upper limit.
Not infinity.
♾️ Then Where Does Infinity Enter?
Now consider:
1, 2, 3, 4, ..., n, ...
or:
n → ∞
Here n is still a finite integer at each stage.
The notation:
n → ∞
means that we're considering what happens as n grows without bound.
This distinction is extremely important.
For example:
lim(n→∞) 1/n = 0
We are not saying:
n = infinity
We're saying:
Consider larger and larger values of
n.
For example:
n = 10
n = 100
n = 1,000
n = 1,000,000
...
As n grows without bound:
1/n → 0
🤯 A Common Misunderstanding
People sometimes say:
“n means infinity.”
That's incorrect.
A better statement is:
noften represents an arbitrary integer or size, and in limits or asymptotic analysis it may be allowed to grow without bound.
That's much more precise.
💡 Why Does Computer Science Love n?
Because computer science constantly deals with size.
For example:
Number of users → n
Number of records → n
Number of elements → n
Input length → n
Number of vertices → n
Number of operations → n
Once n means:
“size of the input”
we can compare algorithms independently of a specific dataset.
⚡ Example: O(1) vs O(n)
Suppose:
numbers = [10, 20, 30, 40, 50]
Accessing:
numbers[2]
doesn't require scanning all elements.
So we often describe it as:
O(1)
Now:
for x in numbers:
print(x)
requires processing each element.
Therefore:
O(n)
The exact value of n isn't the point.
The growth relationship is the point.
📈 Why Big-O Uses n
Big-O notation describes asymptotic growth.
For example:
O(1)
O(log n)
O(n)
O(n log n)
O(n²)
O(2ⁿ)
Here n normally represents input size.
For example:
n = 10
n = 100
n = 1,000
n = 1,000,000
We care about how the algorithm's resource requirements grow as n grows.
🧠 But n Is NOT Mandatory
This is another important point.
You could write:
O(m)
instead of:
O(n)
and it would be mathematically valid if m represents the input size.
You could even write:
O(p)
if you define:
p = input size
The notation works because you define the variable.
The convention simply makes communication easier.
👨💻 Programming Has the Same Principle
Consider:
function processUsers(users) {
for (let i = 0; i < users.length; i++) {
console.log(users[i]);
}
}
We might analyze it as:
n = users.length
Then:
Time Complexity = O(n)
We could instead define:
u = number of users
and say:
O(u)
Nothing mathematically breaks.
But n is conventional and immediately recognizable.
🔤 What About i, j, and k?
There's another beautiful convention in mathematics and programming.
You'll often see:
for i in range(n):
for j in range(n):
...
Here:
n = size
i = current position
j = another position
In more complex algorithms:
i
j
k
often represent nested indices.
For example:
for i in range(n):
for j in range(n):
for k in range(n):
...
This isn't a strict rule.
It's a convention that reduces cognitive load.
🏛️ Mathematical Notation Is a Language
Think about programming languages.
We agree that:
if
means something.
We agree that:
for
means something.
Mathematics works similarly.
We have conventions such as:
n → number / integer / size
i → index
x → variable
f(x) → function
Σ → summation
∞ → infinity
∈ → belongs to
∀ → for all
∃ → there exists
These conventions make mathematical communication faster.
🧠 The Real Reason n Survived
There probably isn't one magical reason.
It's more useful to think of it as notation becoming conventional through repeated use.
A notation becomes powerful when:
Easy to use
+
Easy to remember
+
Widely published
+
Widely taught
+
Widely understood
=
Convention
Once enough mathematicians, engineers, scientists, and programmers use a notation, changing it becomes expensive.
Imagine every textbook suddenly replaced:
n = input size
with:
q = input size
Nothing mathematically changes.
But everyone has to relearn the convention.
That's why established notation tends to persist.
🌍 Conventions Reduce Communication Cost
Imagine reading this algorithm:
O(n log n)
Most programmers immediately understand:
n ≈ input size
Now imagine every author randomly chose:
O(a)
O(x)
O(q)
O(size)
O(elements)
O(data)
All of these could work.
But communication becomes less predictable.
Conventions are useful because they create a shared mental vocabulary.
🔥 The Same Idea Appears Everywhere
You'll find conventional variables throughout computer science.
Graph Theory
V = vertices
E = edges
So:
G = (V, E)
Machine Learning
n = number of samples
d = number of features
Statistics
n = sample size
μ = population mean
σ = standard deviation
Linear Algebra
m × n matrix
Algorithms
n = input size
Programming
i, j, k = indices
Again, these are conventions—not immutable laws.
🧪 A Small Experiment
Let's see how n behaves in code.
def count_to_n(n):
for i in range(1, n + 1):
print(i)
Call:
count_to_n(5)
Output:
1
2
3
4
5
Call:
count_to_n(100)
Now it prints:
1
2
3
...
100
The program doesn't care that we chose the letter n.
We could write:
def count_to_n(number):
for i in range(1, number + 1):
print(i)
and the program behaves identically.
The difference is human communication.
💭 So Why Not Just Write number?
Excellent question.
We actually can.
In production code, descriptive names are often better:
def process_users(user_count):
...
is usually clearer than:
def process_users(n):
...
But mathematics needs extremely compact notation.
Compare:
For every natural number n greater than 1...
with a long descriptive variable name.
Mathematical expressions would quickly become unreadable.
So mathematics favors concise notation.
Programming can often afford descriptive names.
🧑💻 This Gives Developers an Important Lesson
There are two different goals:
Mathematics
Optimize for:
compact symbolic communication
Production Programming
Often optimize for:
readability and maintainability
So this:
for i in range(n):
is perfectly normal.
But this:
for x in range(a):
may be less descriptive if a has no obvious meaning.
And in production code:
for user_index in range(user_count):
could be clearer.
🚀 Final Answer: Why n?
So, why do mathematics and programming use n so much?
Because:
nis conventionally associated with a number or integer.- It is commonly used to represent a count or size.
- Computer science inherited this notation from mathematics.
- Big-O analysis commonly uses
nfor input size. - Mathematical notation values compact symbols.
- Repeated historical usage turned
ninto a widely recognized convention. - Using familiar conventions reduces communication overhead.
nis not inherently special—it's replaceable if properly defined.ndoes not mean infinity.- Infinity is represented separately, usually by
∞.
🧠 The One Sentence to Remember
If someone asks:
“Why is
nused everywhere?”
you can answer:
Because
nbecame a widely accepted mathematical convention for representing an arbitrary number, integer, count, or input size—and computer science inherited that convention.
And if they ask:
“Does
nmean infinity?”
Answer:
No.
nis usually finite; it can grow without bound in contexts such as limits and asymptotic analysis, but that is different fromnbeing infinity.
🔥 Final Thought
One of the fascinating things about mathematics is that many symbols we treat as “obvious” today were not inevitable.
Someone could have chosen another letter.
Someone could have written something completely different.
But mathematics is also a human communication system.
Over time, useful notation survives.
And n survived because millions of mathematicians, scientists, engineers, and programmers learned to look at:
n
and immediately think:
“Some number. Some size. Some count.”
That's the real power of notation.
Not the letter itself.
The shared meaning behind it. 🧠
📚 Further Reading
For deeper exploration, look into:
- History of mathematical notation
- History of algebraic symbolism
- Big-O notation and asymptotic analysis
- History of zero and Indian mathematics
- Mathematical conventions in computer science
- Donald Knuth's work on mathematical and algorithmic notation
Top comments (0)