题目:亲和数是指这样的两个数,互为对方的约数(除自身以外)之和。求10000以内所有的亲和数对。目前思路只知道使用数组和循环语句,但关于如何表达出亲和数的性质不明白
2条回答 默认 最新
- qq_25376897 2022-04-21 09:15关注本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 1无用
import java.util.HashMap; import java.util.Map; public class Test { public static void main(String[] args) { //这个map用来记录已经判断过的数 Map<Integer, Integer> map = new HashMap<>(); for (int i = 2; i <= 10000; i++) { //map.get(i)如果有值,说明这个数被判断过,不用重复判断 if (map.get(i) == null) { int n = sumFactor(i); if (sumFactor(n) == i && i != n) { //记录 map.put(i, n); map.put(n, i); System.out.println(i + "," + n); } } } } /** * 约数(除自身以外)之和 * @param num * @return */ public static int sumFactor(int num) { int sum = 1; //i最大到开方就可以了,一次判断两个数,可以减少判断的次数。i从2开始是为了去掉num自身 for (int i = 2; i <= Math.sqrt(num); i++) { if (num % i == 0) { if (num / i == i) { sum = sum + i; } else { sum = sum + i + num / i; } } } return sum; } }
赞回复
悬赏问题
- ¥15 编译python程序为pyd文件报错:{"source code string cannot contain null bytes"
- ¥20 关于#r语言#的问题:广义加行模型拟合曲线后如何求拐点
- ¥15 fluent设置了自动保存后,会有几个时间点不保存
- ¥20 激光照射到四象线探测器,通过液晶屏显示X、Y值
- ¥15 这怎么做,怎么在我的思路下改下我这写的不对
- ¥50 数据库开发问题求解答
- ¥15 安装anaconda时报错
- ¥15 小程序有个导出到插件方式,我是在分包下引入的插件,这个export的路径对吗,我看官方文档上写的是相对路径
- ¥20 希望有人能帮我完成这个设计( *ˊᵕˋ)
- ¥100 将Intptr传入SetHdevmode()将Intptr传入后转换为DEVMODE的值与外部代码不一致