【算法基础】约数(计算约数 & 约数个数 & 约数之和 & 最大公约数)

一、约数

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

猜你喜欢

转载自blog.csdn.net/m0_51339444/article/details/129665510
今日推荐