使用java 求完数
2022/8/29 14:22:50
本文主要是介绍使用java 求完数,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
完数是什么
如果一个数恰好等于它的真因子之和,则称该数为“完全数” [2] 。各个小于它的约数(真约数,列出某数的约数,去掉该数本身,剩下的就是它的真约数)的和等于它本身的自然数叫做完全数(Perfect number),又称完美数或完备数。 例如:第一个完全数是6,它有约数1、2、3、6,除去它本身6外,其余3个数相加,1+2+3=6。第二个完全数是28,它有约数1、2、4、7、14、28,除去它本身28外,其余5个数相加,1+2+4+7+14=28。第三个完全数是496,有约数1、2、4、8、16、31、62、124、248、496,除去其本身496外,其余9个数相加,1+2+4+8+16+31+62+124+248=496。后面的完全数还有8128、33550336等等。需求描述
一个正整数的因子是所有可以整除它的正整数。而一个数如果恰好等于除它本身外的因子之和,这个数就称为完数。例如6=1+2+3(6的因子是1,2,3)。现在,你要写一个程序,读入两个正整数n和m(1<=n<m<1000),输出[n,m]范围内所有的完数。提示:可以写一个函数来判断某个数是否是完数
参考实现
/** * 求完数 * 一个数如果恰好等于它的因子之和,这个数就称为"完数"。例如6=1+2+3。编程 找出1000以内的所有完数。(因子:除去这个数本身的其它约数) */ public class MyFinishNum { public static void main(String[] args) { Scanner sc = new Scanner(System.in); int a = sc.nextInt();//起始 int b = sc.nextInt(); int cnt = 0; if (a >= 1 && b >= a) { for (int i = a; i < b; i++) { if (isFinishNum(i)) { cnt++; if (cnt != 1) { System.out.print(" "); } System.out.print(i); } } if (cnt == 0) { System.out.println("未查询到完数"); } } } /** * 判断整数是否是一个完数 * 因子和等于这个数,那么这个数就是一个完数 * * @param num * @return */ public static boolean isFinishNum(Integer num) { int sum = 0; //因子和 for (int i = 1; i < num; i++) { if (num % i == 0) { //判断是否是因子 sum += i; //因子相加 } } //判断是否是完数:因子相加是否等于这个数 return sum == num; } }
运行效果
2 9653 6 28 496 8128 1 5 未查询到完数
这篇关于使用java 求完数的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-05-15鸿蒙生态设备数量超8亿台
- 2024-05-13TiDB + ES:转转业财系统亿级数据存储优化实践
- 2024-05-09“2024鸿蒙零基础快速实战-仿抖音App开发(ArkTS版)”实战课程已上线
- 2024-05-09聊聊如何通过arthas-tunnel-server来远程管理所有需要arthas监控的应用
- 2024-05-09log4j2这么配就对了
- 2024-05-09nginx修改Content-Type
- 2024-05-09Redis多数据源,看这篇就够了
- 2024-05-09Google Chrome驱动程序 124.0.6367.62(正式版本)去哪下载?
- 2024-05-09有没有大佬知道这种数据应该怎么抓取呀?
- 2024-05-09这种运行结果里的10.100000001,怎么能最快改成10.1?