数论之质因数

一、质因数基本理解

质因数(素因数或质因子)在数论里是指能整除给定正整数的质数。除了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);
}
posted @ 2022-07-19 19:54  要兵长还是里维  阅读(253)  评论(0编辑  收藏  举报