fork download
  1. #include <stdio.h>
  2.  
  3. int main() {
  4. long long num = 73513440; // 対象の整数
  5. long long count = 0; // 約数の個数を数えるカウンタ
  6. long long sum = 0; // 約数の総和を足していく変数
  7.  
  8. // 【手順1】1から「iの2乗がnum以下」の間ループを回す(効率化のため)
  9. for (long long i = 1; i * i <= num; i++) {
  10. // numがiで割り切れる場合、iは約数
  11. if (num % i == 0) {
  12. count++; // 約数の個数をカウント
  13. sum += i; // 約数を和に加算
  14.  
  15. // 【手順2】相方の約数 (num / i) も同時に処理する
  16. // ただし、i * i == num(平方数)の場合は同じ数を2回足さないようにチェック
  17. if (i != num / i) {
  18. count++; // 相方の個数をカウント
  19. sum += num / i; // 相方の約数を和に加算
  20. }
  21. }
  22. }
  23.  
  24. // 【手順3】結果の表示
  25. printf("%lld の約数の個数: %lld 個\n", num, count);
  26. printf("%lld の約数の総和: %lld\n", num, sum);
  27.  
  28. return 0;
  29. }
Success #stdin #stdout 0s 5324KB
stdin
Standard input is empty
stdout
73513440 の約数の個数: 768 個
73513440 の約数の総和: 365783040