帮朋友解一道考研数学题
今天中午吃饭时被朋友问到一道数学题,让我给看看怎么做
已知a、b、c都是正整数,且满足:
b²=2ac
a+b+c=68
请求出a,b,c
这是一道199管综考研的数学计算题,了解过管综的朋友们应该知道,出题人很喜欢借鉴一些奥数题和竞赛题稍加修改拿出来考学生,这道题也不例外。
其实了解过二次型的同学知道,这道题的思路应该是很清晰的,在不限定a、b、c为正整数的条件时,解是有无穷多个的,另外a和c具有对称性,所以突破口并不在于两个等式,而是在于第一句话:a、b、c都是正整数。
【分析】
1. 解的个数:
首先,我们知道,解方程组时,“元”表示未知数的个数,“次”表示方程组中的最高次幂,而方程组中有效的条件的个数,在线性代数中被称为“秩”,方程组的解也可以根据这些条件,划分为:无解、有限个解、无穷个解,三类情况。
在这道题中,仅仅根据两个等式,是找不到唯一解的,我们将其放在空间坐标系中一探究竟:
将a、b、c分别对应x轴、z轴、y轴,不难发现,b²=2ac是一个椭圆锥形的曲面,它关于平面xoy和y=x对称;而a+b+c=68是一个无限延展的平面;两者的交集为一个椭圆形的点集。两个等式确定下来的点集就是所有的解。
当限定了a、b、c都为正整数之后,解的个数则为有限个解,并且容易分析出a和c具有对称性,所以必为偶数个解。
2. 求解:
<方法1:正整数的奇偶性>
一个正整数,如果不是奇数,那么就必然是偶数;
再根据:{奇×奇=奇}、{奇+偶=奇}
可以进行分析:
①
b² = 2ac 即:平方数=偶数 b不是奇数
b是偶数(记b = 2r)
a + b + c = 68(偶数) a+c = 偶数-偶数 = 偶数
a 和 c 不可能是一奇一偶
a 和 c 同奇同偶
b²=2ac可以改写为:(2r)²=2ac 2r²=ac
两数乘积为偶数,两数中必有一偶数,即a,c必有一偶数
又因为a,c同奇同偶
a 和 c 都是偶数(记 a = 2p , c = 2q)
综上:
a、b、c 都为偶数,各自提出公因子2,
记 b = 2r , a = 2p , c = 2q
有 p + q + r = 34 且 r² = 2pq
②
由①同理,
p、q、r 也都为偶数,各自提出公因子2
记 r = 2x,p = 2y,q = 2z
有 x + y + z = 17 且 x² = 2yz
③
x² = 2yz x 是偶数
x + y + z = 17(奇数) y + z = 奇数- 偶数 = 奇数
y和z为一奇一偶
x² = 2yz 即 偶数平方数 = 2 × 奇数 × 偶数
在x + y + z = 17 中找到符合条件的三个整数就不难了,列举就可以
x | x² | y | z |
2 | 4(没有奇数质因子) | —— | —— |
4 | 16(没有奇数质因子) | —— | —— |
6 | 36 | 2(或9) | 9(或2) |
8 | 64(没有奇数质因子) | —— | —— |
10 | 100 | 找不到解 | 找不到解 |
b = 2r = 4x = 4×6 = 24
a = 2m = 4y = 4×2 = 8
c = 2n = 4z = 4×9 = 36 (a,c具有对称性)
综上所述,符合条件的解集为(8,24,36)和(36,24,8)
<方法二:枚举法>
类似于我们学的排列组合,如果a、b、c都是正整数,并且它们的和是68,那么可能的解集是有穷集合,我们可以利用计算机运行一个嵌套循环进而对所有可能的正整数集进行循环遍历,并在每次步进语句进行之前判断该正整数集是否满足b²=2ac的条件
暴力算法:
代码实现:
public class mathDemo {
public static void main(String[] args) {
int[] out = findOut(68);
System.out.println(Arrays.toString(out));
}
public static int[] findOut(int sum) {
int a = 1;
int b;
int c;
int[] resultSet = new int[3];
while (a <= sum - 2) {
b = 0;
c = sum - a - b;
while (c > 0) {
b++;
c--;
if (b * b == 2 * a * c) {
resultSet[0] = a;
resultSet[1] = b;
resultSet[2] = c;
}
}
a++;
}
return resultSet;
}
}
在代码中输入 sum=68 即可返回一个结果集 [36, 24, 8]
这道题暂时想不到什么高级算法,欢迎拍砖
--------------end--------------
原创内容,转载请注明出处,欢迎交流~
CSDN:@Coder_Liufan
知乎:@Wayne
email:928400563@qq.com
2022年3月30日