微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

约数和倍数的性质

约数(Divisors)

约数是指能整除某个整数的其他整数。例如,对于整数 ( a ),如果存在整数 ( b ) 使得 ( a = b*c ),那么 ( b ) 就是 ( a ) 的约数。

性质:

  1. 1 和自身是每个整数的约数: 每个整数 ( a ) 都有至少两个约数:1 和 ( a ) 本身。
  2. 约数的范围: 如果 ( d ) 是 ( n ) 的一个约数,则 ( d <=sqrt(n))。这意味着寻找 ( n ) 的约数时,只需要在 1 到 sqrt(n)范围内搜索
  3. 完全平方数的约数个数为奇数: 如果 ( n ) 是一个完全平方数,那么它的约数个数一定是奇数,因为完全平方数的平方根只有一个

倍数(Multiples)

倍数是指某个整数的整数倍数。如果 ( a ) 是 ( b ) 的倍数,则存在整数 ( c ) 使得 ( a = b \times c )。

性质:

  1. 倍数的性质: 如果 ( b ) 是 ( a ) 的倍数,那么 ( a ) 也是 ( b ) 的约数。
  2. 倍数之间的关系: 如果 ( a ) 是 ( b ) 的倍数,那么 ( ka )(其中 ( k ) 是任意整数)也是 ( b ) 的倍数。
  3. 最小公倍数(LCM): 如果 ( a ) 和 ( b ) 是两个整数,则 LCM(a,b) 是同时是 ( a ) 和 ( b ) 的倍数的最小正整数。

示例和应用:

  • 如果 ( a = 12 ),它的约数包括 ( 1, 2, 3, 4, 6, 12 )。
  • 如果 ( b = 5 ),它的倍数包括 ( 5, 10, 15, 20,......)。

在数学和计算机科学中,理解和应用约数和倍数的性质对于解决整数分解、公约数和公倍数、最大公约数(GCD)、最小公倍数(LCM)等问题非常重要。

以下是找出n的所有约数的C++代码示例:

int find_divisors(int n, int a[])
{
	//作为数组下标的索引
	int index = 0;
	//不写成k*k<=n是因为k比较大时会超出long long的数据范围
	for (int k = 1; k <= n / k; k++) {
		if (n % k == 0) {
			a[index++] = k;
			//约数成对出现,但是要注意一下k=n/k可能会重复出现。(防止完全平方数的同一个约数重复出现)
			if (n / k != k) a[index++] = n / k;
		}
	}
	return index;
}

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐