题目 1122: [C语言训练]亲密数 题解
定义函数:创建一个函数 遍历每个数:从1到2999遍历每个数a。 计算因数之和:对于每个a,使用 检查条件:确保b大于a,并且b的因数之和等于a。如果满足条件,则(a, b)是一对亲密数。 输出结果:收集所有满足条件的数对,并按升序排列后输出。 函数定义: 主循环:从1遍历到2999,计算每个数a的因数之和b。 条件检查:确保b大于a,然后计算b的因数之和n。如果n等于a,则(a, b)是一对亲密数。 结果输出:将所有满足条件的数对按顺序输出。
发布日期:2021-04-30 21:02:50
浏览次数:88
分类:精选文章
本文共 1886 字,大约阅读时间需要 6 分钟。
为了找出3000以内的亲密数对,我们可以编写一个程序来遍历每个数,计算其因数之和,并检查是否满足亲密数的条件。以下是代码的逻辑和实现过程:
getFactorSum,用于计算给定数n的因数之和(不包括n本身)。getFactorSum计算其因数之和b。以下是优化后的代码:
public class KineticNumbers { public static void main(String[] args) { // 定义一个数组来存储所有找到的亲密数对 java.util.ArrayList aList = new java.util.ArrayList<>(); java.util.ArrayList bList = new java.util.ArrayList<>(); // 遍历每个可能的数a for (int a = 1; a < 3000; a++) { // 计算a的因数之和 int b = getFactorSum(a); // 如果b大于a,继续检查 if (b > a) { // 计算b的因数之和 int n = getFactorSum(b); // 检查是否满足条件 if (n == a) { // 如果满足条件,将a和b添加到列表中 aList.add(a); bList.add(b); } } } // 输出结果 for (int i = 0; i < aList.size(); i++) { System.out.print("(" + aList.get(i) + "," + bList.get(i) + ")"); } } // 计算一个数的因数之和,不包括自身 private static int getFactorSum(int n) { int sum = 0; for (int i = 1; i <= Math.sqrt(n); i++) { if (n % i == 0) { sum += i; // 检查是否是平方数,避免重复计算平方根 if (i != n / i) { sum += n / i; } } } return sum; }} 编程步骤解释:
getFactorSum函数用于计算给定整数n的因数之和。它利用平方根来优化循环,避免重复计算平方数的因数。示例运行结果:
运行上述代码后,会输出三个亲密数对:(220, 284)、(1184, 1210) 和 (2620, 2924)。
优化说明:
- 平方根优化:在计算因数之和时,使用平方根来减少循环次数,提高效率。
- 避免重复计算:当i等于n/i时,避免将同一个因数加两次。
- 列表存储:使用两个列表分别存储a和b的值,确保每一对只输出一次。
总结:通过系统地遍历每个数并利用因数之和的性质,可以有效地找出所有满足条件的亲密数对。
发表评论
最新留言
逛到本站,mark一下
[***.202.152.39]2026年06月10日 13时01分16秒
关于作者
喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
PHP对接百度地图
2025-05-04
PHP对表单提交特殊字符的过滤和处理
2025-05-04
php对象引用和析构函数的关系
2025-05-04
RabbitMQ HTTP 认证后端项目常见问题解决方案
2025-05-04
PHP将图片转换成base64格式(优缺点)
2025-05-04
php将多个值的数组去除重复元素
2025-05-04
php局域网上传文件_PHP如何通过CURL上传文件
2025-05-04
PHP工具插件大全
2025-05-04
php布尔值的++
2025-05-04
PHP常量、变量作用域详解(一)
2025-05-04
PHP应用目录结构设计
2025-05-04
PHP应用程序连接MSQL数据库Demo(附crud程序)
2025-05-04
PHP应用程序连接Oracle数据库Demo(附Oracle客户端安装文件)
2025-05-04
PHP开发api接口安全验证
2025-05-04
PHP开发规范PSR
2025-05-04
PHP开发遇到错误0001
2025-05-04
php异常处理
2025-05-04
PHP引入了泛型和集合两大重要特性,大大改善 PHP 代码的可维护性和可读性
2025-05-04
PHP引擎php.ini参数优化
2025-05-04
PHP引用(&)使用详解
2025-05-04