fork download
  1. #include <bits/stdc++.h>
  2. using namespace std;
  3. #define ll long long
  4. #define nmax 1000007
  5. #define mmax 1007
  6. #define pll pair <long long, long long>
  7. const long long mod = 1e9 + 7;
  8. const long long base = 41;
  9. const long long oo = 1e17;
  10. long long f[nmax];
  11. long long d[nmax];
  12. long long a, b;
  13. long long C[mmax][mmax];
  14. void sang()
  15. {
  16. f[0] = f[1] = 0;
  17. for(int i = 2; i <= nmax; i++)
  18. {
  19. f[i] = 1;
  20. }
  21. for(int i = 2; i <= sqrt(nmax); i++)
  22. {
  23. if(f[i])
  24. {
  25. for(int j = i * i; j <= nmax; j+= i)
  26. {
  27. f[j] = false;
  28. }
  29. }
  30. }
  31. }
  32. void check(long long n)
  33. {
  34. long long x = n;
  35. for(int i = 2; i <= sqrt(x); i++)
  36. {
  37. while(n % i == 0 and f[i])
  38. {
  39. n /= i;
  40. d[i]++;
  41. }
  42. while(n % (x / i) == 0 and f[x / i])
  43. {
  44. n /= (x / i);
  45. d[(x / i)]++;
  46. }
  47. }
  48. if(f[n]) d[n]++;
  49. }
  50. signed main()
  51. {
  52. cin.tie(0) -> sync_with_stdio(0);
  53. if(fopen("lcm.inp", "r"))
  54. {
  55. freopen("lcm.inp", "r", stdin);
  56. freopen("lcm.out", "w", stdout);
  57. }
  58. sang();
  59. cin >> a >> b;
  60. for(int i = a; i <= b; i++)
  61. {
  62. check(i);
  63. }
  64. long long tong = 0;
  65. for(int i = 1; i < nmax; i++)
  66. {
  67. if(d[i] != 0) tong += d[i];
  68. }
  69. long long mer = 1;
  70. for(int i = 1; i < nmax; i++)
  71. {
  72. mer *= (2 * d[i] + 1);
  73. }
  74. cout << mer;
  75. }
  76.  
Success #stdin #stdout 0.02s 11968KB
stdin
Standard input is empty
stdout
1