1994-09-04 04:03:31 +00:00
|
|
|
.\" Copyright (c) 1989, 1993
|
|
|
|
.\" The Regents of the University of California. All rights reserved.
|
|
|
|
.\"
|
|
|
|
.\" This code is derived from software contributed to Berkeley by
|
|
|
|
.\" Landon Curt Noll.
|
|
|
|
.\"
|
|
|
|
.\" Redistribution and use in source and binary forms, with or without
|
|
|
|
.\" modification, are permitted provided that the following conditions
|
|
|
|
.\" are met:
|
|
|
|
.\" 1. Redistributions of source code must retain the above copyright
|
|
|
|
.\" notice, this list of conditions and the following disclaimer.
|
|
|
|
.\" 2. Redistributions in binary form must reproduce the above copyright
|
|
|
|
.\" notice, this list of conditions and the following disclaimer in the
|
|
|
|
.\" documentation and/or other materials provided with the distribution.
|
2010-12-06 19:12:51 +00:00
|
|
|
.\" 3. Neither the name of the University nor the names of its contributors
|
1994-09-04 04:03:31 +00:00
|
|
|
.\" may be used to endorse or promote products derived from this software
|
|
|
|
.\" without specific prior written permission.
|
|
|
|
.\"
|
|
|
|
.\" THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
|
|
|
|
.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
|
|
|
.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
|
|
|
|
.\" ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
|
|
|
|
.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
|
|
|
|
.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
|
|
|
|
.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
|
|
|
|
.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
|
|
|
|
.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
|
|
|
|
.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
|
|
|
|
.\" SUCH DAMAGE.
|
|
|
|
.\"
|
|
|
|
.\" @(#)factor.6 8.1 (Berkeley) 5/31/93
|
|
|
|
.\"
|
1999-08-27 23:37:10 +00:00
|
|
|
.\" $FreeBSD$
|
1994-09-04 04:03:31 +00:00
|
|
|
.\"
|
|
|
|
.\" By: Landon Curt Noll chongo@toad.com, ...!{sun,tolsoft}!hoptoad!chongo
|
|
|
|
.\"
|
|
|
|
.\" chongo <for a good prime call: 391581 * 2^216193 - 1> /\oo/\
|
|
|
|
.\"
|
2002-11-29 16:21:33 +00:00
|
|
|
.Dd October 10, 2002
|
2002-10-09 20:00:25 +00:00
|
|
|
.Dt FACTOR 6
|
|
|
|
.Os
|
|
|
|
.Sh NAME
|
2002-11-29 16:21:33 +00:00
|
|
|
.Nm factor , primes
|
2002-10-09 20:00:25 +00:00
|
|
|
.Nd factor a number, generate primes
|
|
|
|
.Sh SYNOPSIS
|
|
|
|
.Nm
|
|
|
|
.Op Fl h
|
|
|
|
.Op Ar number ...
|
|
|
|
.Nm primes
|
|
|
|
.Op Fl h
|
|
|
|
.Op Ar start Op Ar stop
|
|
|
|
.Sh DESCRIPTION
|
1994-09-04 04:03:31 +00:00
|
|
|
The
|
2002-10-09 20:00:25 +00:00
|
|
|
.Nm
|
|
|
|
utility will factor positive integers.
|
|
|
|
When a number is factored, it is printed, followed by a
|
2002-11-29 16:21:33 +00:00
|
|
|
.Ql \&: ,
|
1999-01-07 22:09:05 +00:00
|
|
|
and the list of factors on a single line.
|
|
|
|
Factors are listed in ascending order, and are preceded by a space.
|
2002-10-09 20:00:25 +00:00
|
|
|
If a factor divides a value more than once, it will be printed more than once.
|
|
|
|
.Pp
|
1994-09-04 04:03:31 +00:00
|
|
|
When
|
2002-10-09 20:00:25 +00:00
|
|
|
.Nm
|
|
|
|
is invoked with one or more arguments, each argument will be factored.
|
|
|
|
.Pp
|
1994-09-04 04:03:31 +00:00
|
|
|
When
|
2002-10-09 20:00:25 +00:00
|
|
|
.Nm
|
1994-09-04 04:03:31 +00:00
|
|
|
is invoked with no arguments,
|
2002-10-09 20:00:25 +00:00
|
|
|
.Nm
|
1994-09-04 04:03:31 +00:00
|
|
|
reads numbers, one per line, from standard input, until end of file or error.
|
|
|
|
Leading white-space and empty lines are ignored.
|
2002-11-29 16:21:33 +00:00
|
|
|
Numbers may be preceded by a single
|
|
|
|
.Ql + .
|
1994-09-04 04:03:31 +00:00
|
|
|
Numbers are terminated by a non-digit character (such as a newline).
|
|
|
|
After a number is read, it is factored.
|
2002-10-09 20:00:25 +00:00
|
|
|
.Pp
|
1994-09-04 04:03:31 +00:00
|
|
|
The
|
2002-10-09 20:00:25 +00:00
|
|
|
.Nm primes
|
1994-09-04 04:03:31 +00:00
|
|
|
utility prints primes in ascending order, one per line, starting at or above
|
2002-10-09 20:00:25 +00:00
|
|
|
.Ar start
|
1994-09-04 04:03:31 +00:00
|
|
|
and continuing until, but not including
|
2002-10-09 20:00:25 +00:00
|
|
|
.Ar stop .
|
1994-09-04 04:03:31 +00:00
|
|
|
The
|
2002-10-09 20:00:25 +00:00
|
|
|
.Ar start
|
1994-09-04 04:03:31 +00:00
|
|
|
value must be at least 0 and not greater than
|
2002-10-09 20:00:25 +00:00
|
|
|
.Ar stop .
|
1994-09-04 04:03:31 +00:00
|
|
|
The
|
2002-10-09 20:00:25 +00:00
|
|
|
.Ar stop
|
|
|
|
value must not be greater than the maximum.
|
|
|
|
The default and maximum value of
|
|
|
|
.Ar stop
|
|
|
|
is 4294967295 on 32-bit architectures
|
Correctly enumerate primes between 4295098369 and 3825123056546413050.
Prior to this commit, primes(6) relied solely on sieving with primes up
to 65537, with the effect that composite numbers which are the product
of two non-16-bit primes would be incorrectly identified as prime. For
example,
# primes 1099511627800 1099511627820
would output
1099511627803
1099511627807
1099511627813
when in fact only the first of those values is prime.
This commit adds strong pseudoprime tests to validate the candidates
which pass the initial sieving stage, using bases of 2, 3, 5, 7, 11,
13, 17, 19, and 23. Thanks to papers from C. Pomerance, J.L. Selfridge,
and S.S. Wagstaff, Jr.; G. Jaeschke; and Y. Jiang and Y. Deng, we know
that the smallest value which passes these tests is 3825123056546413051.
At present we do not know how many strong pseudoprime tests are required
to prove primality for values larger than 3825123056546413050, so we
force primes(6) to stop at that point.
Reviewed by: jmg
Relnotes: primes(6) now correctly enumerates primes up to
3825123056546413050
MFC after: 7 days
Sponsored by: EuroBSDCon devsummit
2014-09-26 09:40:48 +00:00
|
|
|
and 3825123056546413050 on 64-bit ones.
|
2002-10-09 20:00:25 +00:00
|
|
|
.Pp
|
1994-09-04 04:03:31 +00:00
|
|
|
When the
|
2002-10-09 20:00:25 +00:00
|
|
|
.Nm primes
|
1994-09-04 04:03:31 +00:00
|
|
|
utility is invoked with no arguments,
|
2002-10-09 20:00:25 +00:00
|
|
|
.Ar start
|
|
|
|
is read from standard input and
|
|
|
|
.Ar stop
|
|
|
|
is taken to be the maximum.
|
1994-09-04 04:03:31 +00:00
|
|
|
The
|
2002-10-09 20:00:25 +00:00
|
|
|
.Ar start
|
2002-11-29 16:21:33 +00:00
|
|
|
value may be preceded by a single
|
|
|
|
.Ql + .
|
1994-09-04 04:03:31 +00:00
|
|
|
The
|
2002-10-09 20:00:25 +00:00
|
|
|
.Ar start
|
1994-09-04 04:03:31 +00:00
|
|
|
value is terminated by a non-digit character (such as a newline).
|
2002-10-09 20:00:25 +00:00
|
|
|
.Sh DIAGNOSTICS
|
2002-11-29 16:21:33 +00:00
|
|
|
.Bl -diag
|
|
|
|
.It "negative numbers aren't permitted"
|
|
|
|
.It "illegal numeric format"
|
|
|
|
.It "start value must be less than stop value"
|
|
|
|
.It "Result too large"
|
2002-10-09 20:00:25 +00:00
|
|
|
.El
|
|
|
|
.Sh BUGS
|
|
|
|
.Nm
|
|
|
|
cannot handle the
|
2002-11-29 16:21:33 +00:00
|
|
|
.Dq "10 most wanted"
|
2002-10-09 20:00:25 +00:00
|
|
|
factor list,
|
|
|
|
.Nm primes
|
2002-11-29 16:21:33 +00:00
|
|
|
will not get you a world record.
|
Correctly enumerate primes between 4295098369 and 3825123056546413050.
Prior to this commit, primes(6) relied solely on sieving with primes up
to 65537, with the effect that composite numbers which are the product
of two non-16-bit primes would be incorrectly identified as prime. For
example,
# primes 1099511627800 1099511627820
would output
1099511627803
1099511627807
1099511627813
when in fact only the first of those values is prime.
This commit adds strong pseudoprime tests to validate the candidates
which pass the initial sieving stage, using bases of 2, 3, 5, 7, 11,
13, 17, 19, and 23. Thanks to papers from C. Pomerance, J.L. Selfridge,
and S.S. Wagstaff, Jr.; G. Jaeschke; and Y. Jiang and Y. Deng, we know
that the smallest value which passes these tests is 3825123056546413051.
At present we do not know how many strong pseudoprime tests are required
to prove primality for values larger than 3825123056546413050, so we
force primes(6) to stop at that point.
Reviewed by: jmg
Relnotes: primes(6) now correctly enumerates primes up to
3825123056546413050
MFC after: 7 days
Sponsored by: EuroBSDCon devsummit
2014-09-26 09:40:48 +00:00
|
|
|
.Pp
|
|
|
|
.Nm primes
|
|
|
|
is unable to list primes between 3825123056546413050 and 18446744073709551615
|
|
|
|
since it relies on strong pseudoprime tests after sieving, and nobody has
|
|
|
|
proven how many strong pseudoprime tests are required to prove primality for
|
|
|
|
integers larger than 3825123056546413050.
|