fork download
  1. #include <stdio.h>
  2.  
  3. #define MAX_FACTORS 100 // リスト(配列)の最大容量
  4.  
  5. int main() {
  6. long long num = 73513440; // 分解する整数(問題4の値を使用)
  7. long long temp = num; // 計算用に数値をコピー
  8. int factors[MAX_FACTORS]; // 素因数を格納するリスト(配列)
  9. int count = 0; // リストに格納された素因数の個数
  10.  
  11. // 【手順1】2から順番に割っていき、素因数を見つける
  12. for (long long i = 2; i * i <= temp; i++) {
  13. // tempがiで割り切れる間、繰り返し割る
  14. while (temp % i == 0) {
  15. factors[count] = i; // 見つかった素因数をリストに追加
  16. count++; // リストの要素数をインクリメント
  17. temp /= i; // 数値を割った商で更新
  18. }
  19. }
  20.  
  21. // 【手順2】最後に残った数が1より大きい場合、それ自体も素因数
  22. if (temp > 1) {
  23. factors[count] = temp;
  24. count++;
  25. }
  26.  
  27. // 【手順3】結果の表示
  28. printf("%lld の素因数分解結果(リストの中身):\n", num);
  29. for (int i = 0; i < count; i++) {
  30. printf("%d ", factors[i]);
  31. }
  32. printf("\n");
  33.  
  34. return 0;
  35. }
Success #stdin #stdout 0s 5316KB
stdin
Standard input is empty
stdout
73513440 の素因数分解結果(リストの中身):
2 2 2 2 2 3 3 3 5 7 11 13 17