fork download
  1. #include <stdio.h>
  2.  
  3. void factorize(int num)
  4. {
  5. printf("因数分解結果: %d = ", num);
  6. for (int i = 1; i <= num; i++)
  7. if (num % i == 0)
  8. printf("%d ", i);
  9. printf("\n");
  10. }
  11.  
  12. void findFactors(int num, int factors[], int index, int current)
  13. {
  14. if (num == 1) {
  15. for (int i = 0; i < index; i++)
  16. printf("%d ", factors[i]);
  17. printf("\n");
  18. return;
  19. }
  20. for (int i = current; i <= num; i++) {
  21. if (num % i == 0) {
  22. factors[index] = i;
  23. findFactors(num / i, factors, index + 1, i);
  24. }
  25. }
  26. }
  27.  
  28. #define MAX_INSU (1000)
  29. int main()
  30. {
  31. int number;
  32. printf("因数分解したい数を入力してください\n");
  33. printf("(ただし素因数の最大数が%d個を超えるとこのプログラムはクラッシュします): ", MAX_INSU);
  34. scanf("%d", &number);
  35. printf("因数分解組み合わせ:\n");
  36. int factors[MAX_INSU]; // 仮定される因数の最大数
  37. findFactors(number, factors, 0, 2);
  38. return 0;
  39. }
  40.  
Success #stdin #stdout 0.01s 5292KB
stdin
135
stdout
因数分解したい数を入力してください
(ただし素因数の最大数が1000個を超えるとこのプログラムはクラッシュします): 因数分解組み合わせ:
3 3 3 5 
3 3 15 
3 5 9 
3 45 
5 27 
9 15 
135