geekcomputers/Python · error · ValueError

Parameter n must be greater or equal to one.

Error message

Parameter n must be greater or equal to one.

What it means

Raised by solution() when the input integer n is less than or equal to zero. Prime factorization is only defined for positive integers, so the function rejects n <= 0 after the int cast succeeds.

Source

Thrown at A solution to project euler problem 3.py:43

    >>> solution(-17)
    Traceback (most recent call last):
        ...
    ValueError: Parameter n must be greater or equal to one.
    >>> solution([])
    Traceback (most recent call last):
        ...
    TypeError: Parameter n must be int or passive of cast to int.
    >>> solution("asd")
    Traceback (most recent call last):
        ...
    TypeError: Parameter n must be int or passive of cast to int.
    """
    try:
        n = int(n)
    except (TypeError, ValueError):
        raise TypeError("Parameter n must be int or passive of cast to int.")
    if n <= 0:
        raise ValueError("Parameter n must be greater or equal to one.")

    i = 2
    ans = 0

    if n == 2:
        return 2

    while n > 2:
        while n % i != 0:
            i += 1

        ans = i

        while n % i == 0:
            n = n / i

        i += 1

View on GitHub (pinned to 40f4cd2652)

Solutions

  1. Pass a positive integer >= 1
  2. Guard loops so n starts at 1 or 2
  3. Validate user input for positivity before calling

Example fix

// before
solution(0)
// after
solution(600851475143)
Defensive patterns

Strategy: validation

Validate before calling

n = int(n)
if n <= 0:
    raise ValueError('n must be >= 1')
solution(n)

Type guard

def is_positive_int(n) -> TypeGuard[int]:
    return isinstance(n, int) and not isinstance(n, bool) and n > 0

Try / catch

try:
    solution(n)
except ValueError as e:
    if 'greater or equal to one' in str(e):
        n = abs(n) or 1
    else:
        raise

Prevention

When it happens

Trigger: Calling solution(0), solution(-5), or solution("-3") — int("-3") casts fine, then the n <= 0 check fires.

Common situations: Off-by-one bugs in loops calling solution with 0, parsing negative user input, or defaulting a parameter to 0.

Related errors


AI-assisted analysis of geekcomputers/Python@40f4cd2652 (2026-08-27). Data as JSON: /api/errors/b795eccb5fa54353. Report an issue: GitHub.