summaryrefslogtreecommitdiffstats
path: root/factor
diff options
context:
space:
mode:
authorjoerg <joerg@NetBSD.org>2010-05-15 21:22:39 +0000
committerjoerg <joerg@NetBSD.org>2010-05-15 21:22:39 +0000
commitdc738f052f397496c658ec837c8cf9b3510d78ca (patch)
treef4151a99c6c52b36feef63a13139563f10a3eeac /factor
parent8603c7aa19131a678587db53c982724c59f27cc9 (diff)
downloadbsdgames-darwin-dc738f052f397496c658ec837c8cf9b3510d78ca.tar.gz
bsdgames-darwin-dc738f052f397496c658ec837c8cf9b3510d78ca.tar.zst
bsdgames-darwin-dc738f052f397496c658ec837c8cf9b3510d78ca.zip
Follow the Fundamental Theory of Algebra. Disallow factorising of
numbers less than 2 as it is not - naturally unique (negative numbers) - finite (0) - non-empty (1) Discussed with the kristaps and wiz
Diffstat (limited to 'factor')
-rw-r--r--factor/factor.610
-rw-r--r--factor/factor.c14
2 files changed, 10 insertions, 14 deletions
diff --git a/factor/factor.6 b/factor/factor.6
index 69b1c535..32029eca 100644
--- a/factor/factor.6
+++ b/factor/factor.6
@@ -1,4 +1,4 @@
-.\" $NetBSD: factor.6,v 1.11 2010/04/22 06:57:13 wiz Exp $
+.\" $NetBSD: factor.6,v 1.12 2010/05/15 21:22:39 joerg Exp $
.\"
.\" Copyright (c) 1989, 1993
.\" The Regents of the University of California. All rights reserved.
@@ -37,7 +37,7 @@
.\"
.\" chongo <for a good prime call: 391581 * 2^216193 - 1> /\oo/\
.\"
-.Dd April 22, 2010
+.Dd May 15, 2010
.Dt FACTOR 6
.Os
.Sh NAME
@@ -49,7 +49,7 @@
.Sh DESCRIPTION
The
.Nm
-utility factors positive integers.
+utility factors integers larger than 1.
When a number is factored, it is printed, followed by a
.Dq \&: ,
and the list of
@@ -68,8 +68,8 @@ is invoked with no arguments,
.Nm
reads numbers, one per line, from standard input, until end of file or error.
Leading white-space and empty lines are ignored.
-Numbers may be preceded by a single \- or +, although negative numbers
-are rejected.
+Numbers may be preceded by a single +.
+Integer less than 2 are rejected.
Numbers are terminated by a non-digit character (such as a newline).
After a number is read, it is factored.
Input lines must not be longer than
diff --git a/factor/factor.c b/factor/factor.c
index cc6c8b98..10de005d 100644
--- a/factor/factor.c
+++ b/factor/factor.c
@@ -1,4 +1,4 @@
-/* $NetBSD: factor.c,v 1.23 2010/05/13 17:52:11 tnozaki Exp $ */
+/* $NetBSD: factor.c,v 1.24 2010/05/15 21:22:39 joerg Exp $ */
/*
* Copyright (c) 1989, 1993
@@ -42,7 +42,7 @@ __COPYRIGHT("@(#) Copyright (c) 1989, 1993\
#if 0
static char sccsid[] = "@(#)factor.c 8.4 (Berkeley) 5/4/95";
#else
-__RCSID("$NetBSD: factor.c,v 1.23 2010/05/13 17:52:11 tnozaki Exp $");
+__RCSID("$NetBSD: factor.c,v 1.24 2010/05/15 21:22:39 joerg Exp $");
#endif
#endif /* not lint */
@@ -177,7 +177,7 @@ main(int argc, char *argv[])
else
for (; *argv != NULL; ++argv) {
if (argv[0][0] == '-')
- errx(1, "negative numbers aren't permitted.");
+ errx(1, "numbers <= 1 aren't permitted.");
if (BN_dec2bn(&val, argv[0]) == 0)
errx(1, "%s: illegal numeric format.", argv[0]);
pr_fact(val);
@@ -204,12 +204,8 @@ pr_fact(BIGNUM *val)
const ubig *fact; /* The factor found. */
/* Firewall - catch 0 and 1. */
- if (BN_is_zero(val)) /* Historical practice; 0 just exits. */
- exit(0);
- if (BN_is_one(val)) {
- printf("1: 1\n");
- return;
- }
+ if (BN_is_zero(val) || BN_is_one(val))
+ errx(1, "numbers <= 1 aren't permitted.");
/* Factor value. */