题目见: http://www.cppleyuan.com/viewthread.php?tid=5118&extra=page%3D1 /***************************************************************** *filename:resolutionIntoFactors.c *function:求解100以内的整数的所有素数因数 *author:dhfalive dh_fa@live.cn *date:2011.1.1 ****************************************************************/ #include <stdio.h> #include <stdlib.h> int resolutionIntoFactors(int n,int factors[]);//将整数n的所有素数因数求出来存入factors中,n的范围1<n<=100,分解成功返回1,否则返回0 int main() { int fact[6] ={0}; int cnt; int n; while(1 == scanf("%d",&n)) { cnt = resolutionIntoFactors( n, fact); for(int i = 0; i < cnt; i++) { printf("%d ",fact[i]); } puts("/n"); } system("pause"); return 0; } int resolutionIntoFactors(int n,int factors[])//将整数n的所有素数因数求出来存入factors中,n的范围1<n<=100,分解成功返回所有素因数的个数,不成功返回0 { if(n<=1 || n > 100) { return 0; } int primeTable[] = {2,3,5,7,11,13,17,19,23,29,31,37,41,43,47,51,53,59,61,67,71,73,79,83,89,97};//小于100的素数表 int tableLen = sizeof(primeTable) / sizeof(int); //素数表的长度 int cnt = 0;//记录所有素因数的个数 for(int i = 0; i < tableLen; i++) { while(n % primeTable[i] == 0) { factors[cnt++] = primeTable[i]; n /= primeTable[i]; } if(n == 1)//已经分解完,提前跳出 { break; } } return cnt; }