fork download
  1. #include <iostream>
  2. #include <ostream>
  3. #include <algorithm>
  4. #include <vector>
  5. #include <iterator>
  6. #include <cmath>
  7.  
  8. static unsigned long divsum(unsigned long x)
  9. {
  10. unsigned long root = static_cast<unsigned long>(std::sqrt(x));
  11. unsigned long sum = 0;
  12. for (unsigned long i=2; i <= root; ++i)
  13. {
  14. if (x % i == 0)
  15. sum += (i + x/i);
  16. }
  17. return sum;
  18. }
  19.  
  20. int main()
  21. {
  22. unsigned long count;
  23. if (!(std::cin >> count))
  24. return EXIT_FAILURE;
  25.  
  26. // load values
  27. std::vector<unsigned long> data;
  28. std::istream_iterator<unsigned long> it(std::cin);
  29. for (; count-- != 0; data.emplace_back(*it++));
  30.  
  31. // transfor to divsums
  32. std::transform(data.begin(), data.end(), data.begin(), divsum);
  33.  
  34. // dump to stdout
  35. std::copy(data.begin(), data.end(),
  36. std::ostream_iterator<unsigned long>(std::cout, "\n"));
  37.  
  38. return EXIT_SUCCESS;
  39. }
Success #stdin #stdout 0s 3476KB
stdin
8
20 872367 82398 47 1235 9876 1234567890 999999999999
stdout
21
371792
88097
0
444
13195
1977042797
3009636032