一、约数
1. 试除法求约数
最朴素的办法是遍历1 ~ n(不是从2开始),如果能被n整除,就输出。但是,类比质数的求法,约数都是成对出现的,因此只需要遍历到根号n即可。for(int i = 1; i <= x / i; ++i)
,但是需要注意的是,如果这个数是个平方数,则存在正好卡在 x / i 的约数,因此需要特判,防止获取两次。
2. 约数个数
注意:这里面的p1 ~ p n都是质因数。
3. 约数之和
4. 最大公约数(欧几里得算法)
gcd(a,b) = gcd(b,a mod b)
二、案例分析1(试除法求约数)
(一)Question
1. 问题描述
给定 n 个正整数 ai,对于每个整数 a