您的位置:首页 > 其它

分解质因数和求因数个数

2013-11-05 18:41 232 查看
一个正整数N>1,必定可以分解为若干质因数相乘,即N=2^x1*3^x2*...*prime^xi,prime<=N

分解时一步步求N mod i , 2<=i<=N,然后N /= i,即可,具体证明算了= =。。因为能分解下去就一直分解,得到的数再mod必定mod是质数。

代码:

int i = 1;
while(n > 1)
{
i++;
while(!(n % i)) //要一直分解下去
{
n /= i;
cout << i;
if(n != 1) cout << "*";
}
}


============================================================

首先给出结论:对于任意的整型N,分解质因数得到N= P1^x1 * P2^x2* …… * Pn^xn

则N的因子个数M为 M=(x1+1) * (x2+1) * …… *(xn+1)

证明:

每一个质因子的不同指数幂与其它质因子相乘,得到的结果一定不会重复

因此能够将所有的因子都列举出来。

况且质数的和可以组成任意大于1的数的

代码:

int i = 1, s = 1, t;
while(n > 1)
{
i++;
t = 0;
while(!(n % i))
{
n /= i;
t++;
cout << i;
if(n != 1) cout << "*";
}
s *= (t+1);
}

(只是在分解质因数中加上了计数而已)
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  数论 质数 因数个数