每个合数都能拆分成几个质数相乘的形式 void divide(int n) { for(int i = 2; i <= n/i; i++) { if(0 == n%i)//这个i必定是质数 因为小的合数会被分解成小的质数 { //s代表这个质因子出现的次数 int s = 0; while(0 == n%i) { s++; n /= i; } //质因子i 出现了s次 printf("%d %d\n",i,s); } } //大于根号下n的质数只会出现一次 if(n > 1) { printf("%d %d", n, 1); } }