数论之质因数
一、质因数基本理解
质因数(素因数或质因子)在数论里是指能整除给定正整数的质数。除了1以外,两个没有其他共同质因子的正整数称为互质。
二、试除法求质因数及其个数
2.1 思想
要求一个数n的质因数,令i从2开始遍历到n/i,只要n可以被i整除,就一直除以i直到不能被整除,在这个过程中统计每个质因数个数。
- 为什么除的i都是质数?
因为i是从2开始的,n能被i整除就会一直除以i,因此后面还能整除的i一定不会是前面遍历过的倍数。只有是质数才有可能成为n的因数
比如i = 2,n能被2整除,那么n会一直整除2直到不能被2整除,因此i = 4时,n肯定不能被4整除,因为能被4整除的话前面一定能继续被2整除。 - 为什么i的范围是\([2,n/i]\)?
循环退出后要特判一下n是不是被整除为1,如果不为1,则说明此时的n为最后一个质因数。
2.2 代码实现
给定一个数n,求出他的质因数,以及每个质因数的个数。
void divide(int x)
{
for (int i = 2; i <= x / i; i ++ )
if (x % i == 0)
{
int s = 0;
while (x % i == 0) x /= i, s ++ ;
printf("%d %d\n",i, s);
}
if (x > 1) printf("%d %d\n",x, 1);
}