求因子和與因子個數

2021-10-01 13:12:25 字數 1044 閱讀 6411

求因子和與因子個數(包含1和本身)

所有因子個數τ(n)與所有因子的和σ(n)都是乘(積)性函式。

定義1:因子和函式σ定義為整數n的所有正因子之和,記為σ(n)。

定義2:因子個數函式τ定義為正整數n的所有正因子個數,記為τ(n)。

定理1:設p是乙個素數,a是乙個正整數,那麼

σ(n)=1+p+p^2+……+p^a=【p^(a+1)-1】/(p-1)

τ(n)=a+1

定理2:設正整數n有素因子分解n=(p1^α1)*(p2^α2)*(p3^α3)* ....... *(pk^αk),那麼

σ(n)=【(p1^α1)-1】/(p1-1) * 【(p2^α2)-1】/(p2-1) * .....  *【(pk^αk)-1】/(pk-1)

τ(n)=(α1+1)*(α2+1)*(α3+1)*......*(αk+1)

求因子個數**:

#define maxn 50000

#define mod 9901

int nprime,prime[maxn];

bool isprime[maxn];

void doprime()

求因子和**:

#define maxn 50000

#define mod 9901

int nprime,prime[maxn];

bool isprime[maxn];

void doprime()

return ans;

}int factor_sum(int n)

可以求除n!中因子k的個數

int count(int n,int k)

return num;

}快速求出乙個比較大的區間內的所有因子和:

const int lmax=50005;//求出[1,50005]區間內每乙個數的因子和(不包括本身),並用facsum陣列儲存

i64  facsum[lmax];

for(i=0;i<=lmax;i++)   facsum[i]=1;

for(i=2;i*i<=lmax;i++)

因子和與因子個數

摘抄於 acm icpc 程式設計系列數論及應用 基本理論 定義1 因子和函式 定義為整數n的所有正因子之和,記為 n 定義2 因子個數函式 定義為正整數n的所有正因子個數,記為 n 定理 定理1 如果f是積性函式f n 那麼f的和函式f n d n f d 也是積性函式 推論 因子和函式 與因子個...

因子和因子個數

所有因子個數 n 與所有因子的和 n 都是乘 積 性函式。定義1 因子和函式 定義為整數n的所有正因子之和,記為 n 定義2 因子個數函式 定義為正整數n的所有正因子個數,記為 n 定理1 設p是乙個素數,a是乙個正整數,那麼 n 1 p p 2 p a p a 1 1 p 1 n a 1 定理2 ...

求個數 素數因子

public class primefactor public static void main string args for int i 2 i 100 i system.out.print i 的素數因子有 for int j 2 j2的素數因子有 3的素數因子有 4的素數因子有 2,5的素數...