C语言求解2 - n中亲密数对,含代码与逻辑解析
好的,下面是一个用C语言编写的程序来解决亲密数对的问题。代码中包含了一些注释,帮助理解和调试。 ```c #include <stdio.h> // 计算一个数的所有因子和(不包括1和自身) int sumOfFactors(int num) { int sum = 0; for (int i = 2; i * i <= num; i++) { if (num % i == 0) { sum += i; if (i != num / i) { // 避免重复计算平方根 sum += num / i; } } } return sum; } // 判断两个数是否为亲密数对 int isAmicablePair(int a, int b) { return sumOfFactors(a) == b && sumOfFactors(b) == a; } int main() { int n; scanf("%d", &n); for (int a = 2; a <= n; a++) { for (int b = a + 1; b <= n; b++) { if (isAmicablePair(a, b)) { printf("%d %d\n", a, b); printf("%d %d\n", b, a); } } } return 0; } ``` ### 额外需要注意的逻辑点: 1. **因子和计算**:在计算因子和时,要注意避免重复计算平方根。例如,对于数16,因子2和8会被分别计算一次,但2 * 8 = 16,所以只需计算一次。 2. **亲密数对的判断**:确保两个数的因子和互为对方,且两个数不相等。 3. **输出顺序**:题目要求输出每对亲密数两次,一次是a b,另一次是b a,确保输出格式正确。 希望这段代码对你有帮助!如果有任何问题或需要进一步解释,请随时告诉我。 ######[AI写代码神器 | 420点数解答 | 2024-11-22 15:12:55]
- Golang开发:解析JSON数据时数值默认类型及示例解析(百度文心 | 393点数解答 | 2023-11-09 18:13:06)278
- SQL Working Areas Sizing: Manual vs. Automatic Policy - A Comprehensive Analysis(阿里通义 | 530点数解答 | 2024-05-13 10:55:58)308
- C++实现读取数字并输出最小值的代码及解释(字节豆包 | 113点数解答 | 2026-03-20 19:32:56)13
- 大学生日常花销记账App开发:测试部署与后端开发工作全揭秘(百度文心 | 612点数解答 | 2024-05-15 18:59:38)349
- JS 代码:轻松定义变量 test 并赋值为“red”( | 6点数解答 | 2024-05-19 20:46:45)384
- JS 代码:轻松定义含“Saab、Volvo、BMW”的数组变量 mycars( | 14点数解答 | 2024-05-19 20:47:47)416
- JS 代码:判断“red”改值为“green”并弹窗显示结果( | 176点数解答 | 2024-05-20 21:33:04)416
- 用 JS 代码巧妙判断 a 与 b 关系:输出对应结果 ( | 47点数解答 | 2024-05-20 22:10:14)325
- 用 JS 中 for 循环实现 1 到 100 相加并输出结果到页面的完整代码 ( | 240点数解答 | 2024-05-20 22:11:29)465
- JS 巧用 for in 循环逐行输出对象 key:value,还有关键判断!( | 208点数解答 | 2024-05-20 22:15:55)362
- 用 JS 的 while 循环实现 1 到 100 相加并输出到页面的代码揭秘( | 47点数解答 | 2024-05-20 22:16:48)356
- JS 代码:定义存储“saab”“volvo”“bmw”的数组变量 mycars( | 21点数解答 | 2024-05-20 22:18:13)278