factor.c
来自「国外网站上的一些精典的C程序」· C语言 代码 · 共 82 行
C
82 行
/*** factor.c -- print prime factorization of a number** Ray Gardner -- 1985 -- public domain** Modified Feb. 1989 by Thad Smith > public domain**** This version takes numbers up to the limits of double precision.*/#include <stdio.h>#include <stdlib.h>#include <math.h>int prevfact = 0;void factor (double);void show (double, int);main (int argc, char *argv[]){ while ( --argc ) factor(atof(*++argv)); return 0;}void factor (double n){ double d; int k; prevfact = 0; d = n+1; /* test for roundoff error */ if (n+3 != d+2) { printf("%0.0f is too large to process.\n", n); return; } if (fmod(n,1.) != 0.0) { printf("%f is not an integer.\n",n); return; } printf("%0.0f ",n); if ( n < 2. ) { printf("is less than 2.\n"); return; } else if ( n > 2. ) { d = 2; for ( k = 0; fmod(n,d) == 0.0; k++ ) n /= d; if ( k ) show(d,k); for ( d = 3; d * d <= n; d += 2 ) { for ( k = 0; fmod(n,d) == 0.0; k++ ) n /= d; if ( k ) show(d,k); } } if ( n > 1 ) { if ( ! prevfact ) printf(" is prime"); else show(n,1); } printf("\n");}void show (double d, int k){ if ( prevfact ) printf(" * "); else printf(" = "); prevfact++; printf("%0.0f",d); if ( k > 1 ) printf("^%d",k);}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?