TheAlgorithms/JavaScript · error · Error

Number must be greater than zero.

Error message

Number must be greater than zero.

What it means

The liouvilleFunction computes the Liouville function lambda(n), which returns 1 if n has an even number of prime factors (counted with multiplicity) and -1 if odd. The guard requires n > 0 since prime factorization via PrimeFactors is only defined for positive integers.

Source

Thrown at Maths/LiouvilleFunction.js:22

 * For any positive integer n, define λ(n) as the sum of the primitive nth roots of unity.
 * It has values in {−1, 1} depending on the factorization of n into prime factors:
 *   λ(n) = +1 if n positive integer with an even number of prime factors.
 *   λ(n) = −1 if n positive integer with an odd number of prime factors.
 */

/**
 * @function liouvilleFunction
 * @description -> This method returns λ(n) of given number n
 * returns 1 when number has even number of prime factors
 * returns -1 when number has odd number of prime factors
 * @param {Integer} number
 * @returns {Integer} 1|-1
 */

import { PrimeFactors } from './PrimeFactors.js'
export const liouvilleFunction = (number) => {
  if (number <= 0) {
    throw new Error('Number must be greater than zero.')
  }
  return PrimeFactors(number).length % 2 === 0 ? 1 : -1
}

View on GitHub (pinned to 5c39e87a9a)

Solutions

  1. Pass a positive integer to liouvilleFunction.
  2. Pre-validate that n > 0 before calling.
  3. Handle zero and negative cases separately in upstream logic.

Example fix

// before
liouvilleFunction(n)
// after
if (n <= 0) throw new RangeError('n must be a positive integer')
liouvilleFunction(n)
Defensive patterns

Strategy: validation

Validate before calling

if (!Number.isInteger(number) || number <= 0) {
  throw new RangeError('number must be a positive integer')
}
liouvilleFunction(number)

Type guard

const isPositiveInteger = (n) => typeof n === 'number' && Number.isInteger(n) && n > 0

Prevention

When it happens

Trigger: Calling liouvilleFunction(0) or liouvilleFunction(-6). Any non-positive integer triggers this error.

Common situations: Zero-initialized counters, negative results from subtraction passed directly, or loop variables starting at 0 that feed into the function.

Related errors


AI-assisted analysis of TheAlgorithms/JavaScript@5c39e87a9a (2026-08-13). Data as JSON: /api/errors/2b65317b6b28c850. Report an issue: GitHub.