Happy 2004(积性函数、快速幂取模、费马小定理、求因数和)

博客介绍了如何利用积性函数、快速幂取模和费马小定理解决求正整数X的因数和问题模29的结果。通过举例、定理阐述和算法实现,解释了在处理特定数值如2004X时的计算过程,强调了快速幂取模中的类型溢出问题,并提供了错误示例和解决方案。
摘要由CSDN通过智能技术生成

题目

Consider a positive integer X,and let S be the sum of all positive integer divisors of 2004X. Your job is to determine S modulo 29 (the rest of the division of S by 29).

Take X = 1 for an example. The positive integer divisors of 20041 are 1, 2, 3, 4, 6, 12, 167, 334, 501, 668, 1002 and 2004. Therefore S = 4704 and S modulo 29 is equal to 6.
Input
The input consists of several test cases. Each test case contains a line with the integer X (1 <= X <= 10000000).
A test case of X = 0 indicates the end of input, and should not be processed.
Output
For each test case, in a separate line, please output the result of S modulo 29.
Sample Input
1
10000
0
Sample Output
6
10

积性函数

本题中,2004的约数和 S ( 200 4 x ) S(2004^x) S(2004x)就是一个积性函数
积性函数:
p = a × b ⇒ S ( p ) = S ( a ) × S ( b ) p = a \times b\Rightarrow S(p) = S(a) \times S(b) p=a×bS(p)=S(a)×S(b)
p n = a n × b n ⇒ S ( p n ) = S ( a n ) × S ( b n ) p^n = a^n\times b^n\Rightarrow S(p^n) = S(a^n) \times S(b^n) pn=an×bnS(pn)=S(an)×S(bn)
a和b均为质数

求因数和

S ( p n ) = S(p^n) = S(pn)=

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值