质因数基本理解
试除法求质因数及其个数
思想
要求一个数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
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。