fork download
  1. import java.util.*;
  2. import java.io.*;
  3.  
  4. class Ramen {
  5.  
  6. static final long MOD = 1_000_000_007;
  7.  
  8. public static void main(String[] args) throws IOException {
  9. PrintWriter out = new PrintWriter(System.out);
  10. long N = Long.parseLong(br.readLine());
  11. out.println(solve(N) % MOD);
  12. br.close();
  13. out.close();
  14. }
  15.  
  16. static long solve(long N) {
  17. long ans = 1;
  18. for (long d = 1; d * d <= N; d++) {
  19. if (N % d == 0) {
  20. long inc = d * phi(d);
  21. ans = (ans + inc % MOD) % MOD;
  22. if (d * d != N) {
  23. inc = (N/d % MOD) * phi(N/d);
  24. ans = (ans + inc % MOD) % MOD;
  25. }
  26. }
  27. }
  28. return (ans * (N%MOD) % MOD) * 500000004 % MOD;
  29. // 500000004 is 2^-1 mod (10^9 + 7)
  30. }
  31.  
  32. static long phi(long N) {
  33. long ans = N;
  34. for (long p = 2; p * p <= N; p++) {
  35. if (N % p == 0) {
  36. while (N % p == 0) N /= p;
  37. ans -= ans / p;
  38. }
  39. }
  40. if (N > 1) ans -= ans / N;
  41. return ans % MOD;
  42. }
  43.  
  44. }
  45.  
Success #stdin #stdout 0.1s 54800KB
stdin
6
stdout
66