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