获取中...

-

Just a minute...

因数分解:

算术基本定理可以描述为:对于每个整数n,都可以唯一分解成素数的乘积

$n = p_1p_2p_3…p_k$

这里的素数并不要求是不一样的,所以可以将相同的素数进行合并,采用素数幂的乘积进行表示

$n = p_1^{e_1} p_2^{e_2} …p_k^{e_k}$

素数拆分:

(需要素数筛):

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
int prime[MAX_1];
int visit[MAX_1];
int flag[MAX_1];
void Prime(int n)
{
for(int i = 2;i <= n;i++)
{
if(!visit[i])
{
prime[++prime[0]] = i;//素数个数以及素数的值
flag[i] = 1;//记录素数,可以改用map
}
for(int j = 1;j <= prime[0] && i*prime[j] <= n;j++)//素数筛精华
{
visit[i*prime[j]] = 1;
if(i % prime[j] == 0) break;
}
}
}

因子:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
map<int,int> cnt;
while(k != 1)//k为要求的数
{
//prime 和 flag 均为素数筛提供
for(int i = 1;i < prime[0];i++)
{
if(flag[k])//分解完成
{
cnt[k]++;
k=1;
break;
}
if(k % prime[i] == 0)
{
cnt[prime[i]]++;
k /= prime[i];
break;
}
}
}

因子个数:

$cntx = (e_1 + 1)(e_1+1)…(e_k+1)$

1
2
3
4
5
6
map<int,int>::iterator it;
int cntx = 1;
for(it = cnt.begin();it != cnt.end();it++)
{
cntx *= (it->second + 1);
}

因子和:

1
2
3
4
5
6
7
8
9
10
map<int,int>::iterator it;
for(it = cnt.begin();it != cnt.end();it++)
{
int k = 1;
for(int i = 0;i <= it->second;i++)
{
k *= it->first;
}
ans *= (k-1) / (it->first -1);//包括本身和1
}
相关文章
评论
分享
  • 乘法逆元

    乘法逆元什么是乘法逆元?那么存在一个b,使得假设$gcd(a,p) = 1​$,则有$a*b ≡ 1 (mod p) ​$ 即 $ab=pk+1​$ b就叫做a关于模p的乘法逆元 怎么求乘法逆元一.费马小定理费马小定理:当a,p满足...

    乘法逆元
  • 专题-搜索

    专题-搜索
  • vim

    vim
  • 专题-Dancing Links X

    122123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616...

    专题-Dancing Links X
  • ubuntu18.04双硬盘(ssd+机械)+双系统(win10+linux)

    安装最先一定要分清楚一件事情你的系统启动方式是什么 UEFI or BCD?看清楚再安装(百度怎么看) 安装参考链接: https://www.cnblogs.com/ERFishing/p/10050867.html 注意事项1....

    ubuntu18.04双硬盘(ssd+机械)+双系统(win10+linux)
  • NC-10

    NC-10
  • NC-9

    NC-9
  • NC-8

    NC-8
  • ECF-70-2

    Educational Codeforces Round 70 (Rated for Div. 2)A.You Are Given Two Binary Strings乘2^k次,其实就是把二进制左移了k位 加法就是对应位加就好了,然...

    ECF-70-2
  • NC-7

    2019牛客暑期多校训练营(第七场)A.String题目思路:其实就是要求一个字符串,把原串的后缀拼到前面的时候,每一种后缀拼完字典序都比原串大 然后题目给你一个s,问你s最少能切割为多少个这样的字符串 可以发现,这样的串一定是0开头...

    NC-7
Please check the parameter of comment in config.yml of hexo-theme-Annie!