fork download
  1. #include <stdio.h>
  2. #include <math.h>
  3.  
  4. #define _MAX 10000
  5. typedef struct _x {
  6. int x;
  7. int y;
  8. int z;
  9. } X;
  10.  
  11. X num[_MAX+1];
  12.  
  13. int countlist(int i, int c)
  14. {
  15. if (num[i].y == 0) {
  16. return c;
  17. } else {
  18. c++;
  19. return countlist(num[i].x, c);
  20. }
  21. }
  22. void printlist(int i)
  23. {
  24. if (num[i].y == 0) {
  25. printf("%d", num[i].x);
  26. } else {
  27. printf("%d * ", num[i].y);
  28. printlist(num[i].x);
  29. }
  30. }
  31.  
  32. int main()
  33. {
  34. int i, j, x, max = 0, c, nu;
  35.  
  36. for (i=1; i<=_MAX; i++) {
  37. num[i].x = i; num[i].y = 0; num[i].z = 0;
  38. }
  39. for (i = 2; i <= _MAX; i += 2) {
  40. if (2 != num[i].x){
  41. num[i].x /= 2; num[i].y = 2; num[i].z++;
  42. }
  43. }
  44. x = sqrt(_MAX);
  45. for (i = 3; i <= x; i++) {
  46. if (num[i].z != 0){
  47. continue;
  48. }
  49. for (j = i; j <= _MAX; j += i) {
  50. if (i != num[j].x && num[j].z == 0) {
  51. num[j].x /= i; num[j].y = i; num[j].z++;
  52. }
  53. }
  54. }
  55.  
  56. for (i = 1; i <= _MAX; i++) {
  57. c = countlist(i, 1);
  58. if (max < c) {
  59. max = c; nu = i;
  60. }
  61. }
  62. printf("%d = ", nu);
  63. printlist(nu);
  64. printf("\n因子数:%d\n",max);
  65.  
  66. return 0;
  67. }
  68.  
Success #stdin #stdout 0s 2408KB
stdin
Standard input is empty
stdout
8192 = 2 * 2 * 2 * 2 * 2 * 2 * 2 * 2 * 2 * 2 * 2 * 2 * 2
因子数:13