数论之质因数
作者:互联网
质因数基本理解
试除法求质因数及其个数
思想
要求一个数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为最后一个质因数。
代码实现
给定一个数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);
}
标签:遍历,数论,质数,个数,int,整除,质因数 来源: https://www.cnblogs.com/3-louise-wang/p/16495534.html