fork download
  1. #include <stdio.h>
  2.  
  3. // 再帰的に素因数を表示する関数
  4. void prime_factor(int n, int divisor) {
  5. // ベースケース: nが1になったら終了
  6. if (n == 1) {
  7. return;
  8. }
  9.  
  10. // nがdivisorで割り切れる場合
  11. if (n % divisor == 0) {
  12. printf("%d ", divisor);
  13. prime_factor(n / divisor, divisor); // divisorで割った商に対して再帰呼び出し
  14. } else {
  15. prime_factor(n, divisor + 1); // divisorを1増やして再帰呼び出し
  16. }
  17. }
  18.  
  19. int main() {
  20. int n;
  21. printf("正の整数を入力してください: ");
  22. scanf("%d", &n);
  23.  
  24. if (n <= 1) {
  25. printf("1以上の整数を入力してください。\n");
  26. } else {
  27. printf("%dの素因数: ", n);
  28. prime_factor(n, 2);
  29. printf("\n");
  30. }
  31.  
  32. return 0;
  33. }
  34.  
Success #stdin #stdout 0s 5288KB
stdin
36
stdout
正の整数を入力してください: 36の素因数: 2 2 3 3