NAME
    factor - smallest prime factor not exceeding specified limit

SYNOPSIS
    factor(n [, limit [, err]])

TYPES
    n           integer
    limit       integer with abs(limit) < 2^32, defaults to 2^32 - 1
    err         integer

    return      positive integer or err

DESCRIPTION
    This function ignores the signs of n and limit, so here we shall
    assume n and limit are both nonnegative.

    If n has a prime proper factor less than or equal to limit, then
    factor(n, limit) returns the smallest such factor, or 1 if no
    factor was found below the limit.

        NOTE: A proper factor of n>1 is a factor < n.  In other words,
              for n>1 is not a proper factor of itself.  The value 1
              is a special case because 1 is a proper factor of 1.

    When every prime proper factor of n is greater than limit, 1 is
    returned.  In particular, if limit < 2, factor(n, limit) always
    returns 1.  Also, factor(n,2) returns 2 if and only if n is even
    and n > 2.

    If 1 < n < nextprime(limit)^2, then f(n, limit) == 1 <==> n is prime.
    For example, if 1 < n < 121, n is prime if and only if f(n,7) == 1.

    If limit >= 2^32, factor(n, limit) causes an error and
    factor(n, limit, err) returns the value of err.

EXAMPLE
    ; print factor(35,4), factor(35,5), factor(35), factor(-35)
    1 5 5 5

    ; print factor(2^32 + 1), factor(2^47 - 1), factor(2^59 - 1)
    641 2351 179951

LIMITS
    limit < 2^32

LINK LIBRARY
    FLAG zfactor(ZVALUE n, ZVALUE limit, ZVALUE *res)

SEE ALSO
    isprime, lfactor, nextcand, nextprime, prevcand, prevprime,
    pfact, pix, ptest

## Copyright (C) 1999-2006,2021  Landon Curt Noll
##
## Calc is open software; you can redistribute it and/or modify it under
## the terms of the version 2.1 of the GNU Lesser General Public License
## as published by the Free Software Foundation.
##
## Calc is distributed in the hope that it will be useful, but WITHOUT
## ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
## or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU Lesser General
## Public License for more details.
##
## A copy of version 2.1 of the GNU Lesser General Public License is
## distributed with calc under the filename COPYING-LGPL.  You should have
## received a copy with calc; if not, write to Free Software Foundation, Inc.
## 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
##
## Under source code control:   1995/12/18 12:34:57
## File existed as early as:    1995
##
## chongo <was here> /\oo/\     http://www.isthe.com/chongo/
## Share and enjoy!  :-)        http://www.isthe.com/chongo/tech/comp/calc/
