1 /*七夕节
 2 如果N=p_1^n_1*p_2^n2*......*p_m^n_m
 3 则结果为(p_1^0+p_1^1+...+p_1^n_1)*(p_2^0+p_2^1+...+p_2^n_2)*...*(p_m^0+p_m^1+...+p_m^n_m)-N
 4 */
 5 #include<iostream>
 6 #include<string.h>
 7 #include<stdio.h>
 8 using namespace std;
 9 int prime[500000], cnt, n, ans;
10 bool primtmp[500002];
11 int main()
12 {
13     cnt = 0;
14     memset(primtmp, -1sizeof(primtmp));
15     for (int i = 2; i <= 500000++i) {
16     if (primtmp[i]) {
17         prime[cnt++= i;
18         int p = 2 * i;
19         while (p <= 500000) {
20         primtmp[p] = 0;
21         p += i;
22         }
23     }
24     }
25     int T;
26     scanf("%d"&T);
27     while (T--) {
28     scanf("%d"&n);
29     int N = n, pos = 0;
30     ans = 1;
31     while (n > 1) {
32         int ps = 1;
33         while (n % prime[pos] == 0) {
34         n /= prime[pos];
35         ps *= prime[pos];
36         ps++;
37         }
38         ans *= ps;
39         pos++;
40     }
41     printf("%d\n", ans - N);
42     }
43 }


相关文章:

  • 2022-12-23
  • 2021-11-26
  • 2022-02-12
  • 2021-06-27
  • 2022-12-23
  • 2021-08-25
  • 2022-12-23
  • 2021-08-21
猜你喜欢
  • 2021-11-12
  • 2021-06-26
  • 2021-04-19
相关资源
相似解决方案