#include #include "precision.h" #include "pfactor.h" void showfactors(); int main(argc, argv) int argc; char *argv[]; { precision n = pUndef; --argc; if (argc != 0) { do { pset(&n, atop(*++argv)); showfactors(n); } while (--argc > 0); } else { do { pset(&n, fgetp(stdin)); if (n == pUndef) break; showfactors(n); } while (1); } pdestroy(n); return 0; } void showfactors(n) precision n; { precision r = pUndef; FactorList factors = (FactorList) 0; (void) pparm(n); pset(&r, ptrial(n, (unsigned *) 0, &factors)); fputp(stdout, n); fputs(" = ", stdout); pputfactors(stdout, factors); if pne(r, pone) { if pne(r, n) putc('*', stdout); if (!pprime(r, 16)) { fputc('(', stdout); fputp(stdout, r); fputc(')', stdout); } else { fputp(stdout, r); } } putc('\n', stdout); pfreefactors(&factors); pdestroy(r); pdestroy(n); }