因式分解其实是一个很简单的应用,这里做一下小小的总结
计算一个数的所有因子:这里只需要找到这个数的平方根的因子,然后再用该数分别除以每个因子,就会找到每个因子对应的另一个因子
int a[10000],num = 0;//存储n的因子
void factor(int n)//a中从0到num-1存储了n的所有因子
{
int t = sqrt(n);
for(int i = 1; i <= t; i++)
if(n % i == 0)
a[num++] = i;
int q = num-1;
if(t * t == n)
num--;
for(i = q;i >= 0;i--)
{
a[num++] = n / a[i];
}
}
有时候,不仅仅只求某个数的所有因子,还会求该数的所有因式,当然求因式是建立在已知所有因子的基础上的。
要知道,因式并不一定之一两个因子,有可能会有很多个。
int b[10000];
void NumFac()//b[num]存储了n的所有组成因式的个数
{
b[1] = 1;
for(int i = 2;i <= num;i++)
{
b[i] = 1;
for(int j = i - 1;j >= 1;j--)
{
if(a[i] % a[j] = 0)
b[i] += b[j];
}
}
}