Relay-Version: version B 2.10 5/3/83; site utzoo.UUCP Path: utzoo!utgpu!water!watmath!clyde!rutgers!seismo!mcvax!botter!ast From: ast@botter.UUCP Newsgroups: comp.os.minix Subject: Program to print prime factors of a number Message-ID: <1580@botter.cs.vu.nl> Date: Wed, 26-Aug-87 16:14:33 EDT Article-I.D.: botter.1580 Posted: Wed Aug 26 16:14:33 1987 Date-Received: Sat, 29-Aug-87 07:53:32 EDT Reply-To: ast@cs.vu.nl (Andy Tanenbaum) Organization: VU Informatica, Amsterdam Lines: 48 /* factor - factor a number Author: Andy Tanenbaum */ main(argc, argv) int argc; char *argv[]; { long i, n, flag = 0, first(), atol(); n = atol(argv[1]); if (argc != 2 || n < 2) { printf("Usage: factor n (2 <= n < 2**31)\n"); exit(1); } if (n == 2) { printf("2 is a prime\n"); exit(0); } while (1) { i = first(n); if (i == 0) { if (flag == 0) printf("%D is a prime\n", n); else printf("%D\n", n); exit(0); } printf("%D ", i); n = n / i; flag = 1; } } long first(k) long k; { /* Return the first factor of k. If it is a prime, return 0; */ long i; if (k == 2) return(0); if (k % 2 == 0) return(2); for (i = 3; i <= k/3; i+=2) if (k % i == 0) return(i); return(0); }