700字范文,内容丰富有趣,生活中的好帮手!
700字范文 > 【模板】求一个数的因子个数-质因数分解

【模板】求一个数的因子个数-质因数分解

时间:2019-12-31 13:42:43

相关推荐

【模板】求一个数的因子个数-质因数分解

结论

对于任何一个自然数NN,都可以分解质因子得到如下形式:

N=pe11∗pe22∗pe33∗⋯∗pekkN=p1^e1 ∗ p2^e2 ∗ p3^e3∗ ⋯ ∗ pk^ek(e1、e2…ek是指数)

那么有结论:N的因子的个数为:f(n)=(1+e1)∗(1+e2)∗⋯∗(1+ek)

如N=100,分解质因子变形为:100=22∗52,NN的因子的个数为:f(N)=f(100)=(1+2)∗(1+2)=9

即:1,2,4,5,10,20,25,50,100

推导

1.因为任何一个数都能分解成如上形式(N=1时,2^0)

2.又在对N进行分解时,对质因数p1,有选0~e1个共e1+1种情况;

3.且质因数相乘结果不重复(由于质数间互质),所以结果就是:

f(n)=(1+e1)∗(1+e2)∗⋯∗(1+ek)

代码展示

int Get_factornum(int x){int ans=1;for(int i=2;i*i<=x;i++){int num=1;while(x%i==0){num++;x/=i;}ans*=num;}if(x>1){//说明还存在一个质因数,例如14 ans*=2;}return ans;}

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。