质数

1.1 Discription
小畅和阿尼巴是好朋友。
如果你赶着 AK,请手动跳至最后一行
阿尼巴特别喜欢质数。
他认为质数就是有智慧的数,如果经常玩质数的话一定会变得像小畅
一样充满智慧。
然而这次他在玩一个数的时候,不小心把它给玩散了
这个数散落得满地都是,以至于喜欢跳舞的小畅都没有地方跳街舞了!!!
小畅十分气愤,恰好他知道阿尼巴喜欢质数
于是就想出一道质数的题目来气气他
“今天,我是作为一个长者在这里跟你讲话的。毕竟你啊,too young,
too simple, sometimes naive。你以为玩质数就可以变得像我一样满腹
智慧吗?想变的有智慧,先让我作为数论王者来考考你。怕你自卑,就
不考你多项式 exp,ln,sqrt, 求逆那种稍微小学一点的内容了。设 f (i) 为
i 的不同的质因子的个数。一个数 i 它散落在地上的方案就是 2 f (i) ,你
啊现在给我求出 1 − n 所有数散落在地上的方案和。不然,既然不让我
跳舞, 就不得不好好惩罚你了呢”
咳咳,说人话,就是让你求$sum_{i=1}^{n}2^{f(i)}$,其中 f (i) 表示 i 的不同的质因子的个数
答案对 998244353 取模
 Input format
第一行一个正整数 n
Output format
输出一行,表示答案
Sample Input
2
Sample Input
3
Hint
20% 的数据满足 n ≤ 10^6
100% 的数据满足 1 ≤ n ≤ 10^12

首先$2^{f(x)}$可以看作把x的质因数分配给$i$和$j$,显然$gcd(i,j)=1$

所以$sum_{i=1}^{n}sum_{d|i}[gcd(d,frac{i}{d})=1]$

$sum_{i=1}^{n}sum_{d|i}sum_{p|d wedge p|frac{i}{d}}mu(p)$

$g(i)$表示$i$的约数个数

$sum_{i=1}^{n}sum_{p^2|i}g(frac{i}{p^2})mu(p)$

$sum_{p=1}^{sqrt(n)}mu(p)sum_{i=1}^{frac{n}{p^2}}g(i)$

$sum_{i=1}^{frac{n}{p^2}}g(i)=sum_{i=1}^{frac{n}{p^2}}sum_{d|i}1$

交换一下变成$sum_{p=1}^{sqrt(n)}mu(p)sum_{i=1}^{frac{n}{p^2}}[frac{n}{p^2*d}]$

然后枚举p套一个数论分块就可以了

 1 #include<iostream>
 2 #include<cstdio>
 3 #include<cstring>
 4 #include<algorithm>
 5 #include<cmath>
 6 using namespace std;
 7 typedef long long lol;
 8 lol mu[1000001],n,lim,ans,Mod=998244353,pri[10000001],tot;
 9 bool vis[10000001];
10 lol query(lol x)
11 {lol pos,i;
12   lol sum=0;
13   for (i=1;i<=x;i=pos+1)
14     {
15       pos=x/(x/i);
16       sum+=(pos-i+1)*(x/i)%Mod;sum%=Mod;
17     }
18   return sum;
19 }
20 int main()
21 {lol i,j;
22   cin>>n;
23   lim=sqrt(n);
24   mu[1]=1;
25   for (i=2;i<=lim;i++)
26     {
27       if (vis[i]==0)
28     {
29       pri[++tot]=i;
30       mu[i]=-1;
31     }
32       for (j=1;j<=tot;j++)
33     {
34       if (1ll*i*pri[j]>lim) break;
35       vis[i*pri[j]]=1;
36       if (i%pri[j]==0)
37           break;
38       else mu[i*pri[j]]=-mu[i];
39     }
40     }
41   for (i=1;i<=lim;i++)
42     {
43       ans+=mu[i]*query(n/(i*i));
44       ans=(ans+Mod)%Mod;
45     }
46   cout<<ans;
47 }
原文地址:https://www.cnblogs.com/Y-E-T-I/p/8696509.html