一个数一定会有质因数(除了1),一个数可以分解成多个质因数的乘积,例如12=2*2*3,。
求n的质因数的方法:
法一。因为质因数顾名思义,即是质数也是因数,那么我们可以从2-sqrt(n)+1,求出其中的质数,然后以此判断能否被n整除。也可以从2-(sqrt(n)+1,循环判断i能否被n整除,在判断是否是质数。第一种方法比第二种快。
最简单的方法是下面这种,求x的质因数,保存在数组a中。原理是,质因数中肯定从2开始,先求出最小的质因数first,然后在另一个质因数,n/=first,就相当于再求这个数的最小质因数,从first开始,一直都是这个循环过程
cin>>x;
for(int j=2;j<=sqrt(x);j++){
while(x%j==0){
a[num++]=j;
x/=j;
}
}
if(x>1)a[num++]=x;
例题1: