首页 > 编程语言 >使用java 求完数

使用java 求完数

时间:2022-08-29 09:34:48浏览次数:86  
标签:约数 java int 28 因子 完数 使用 496

完数是什么

如果一个数恰好等于它的真因子之和,则称该数为“完全数” [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,int,28,因子,完数,使用,496
From: https://www.cnblogs.com/wdh01/p/16626918.html

相关文章

  • 根据当前用户使用登陆设备进行判断(移动端或pc)
    需求概括:原jsp页面,pc端页面大小风格在移动端使用时部分页面缺失。现要求进行页面自适应改造,使其可以在移动端进行页面自适应。大致想法为根据用户使用登入系统的方式进行......
  • 配置java空白项目
    newproject 创建新的项目文件加载完成后点击file创建module模块点击java创建java文件 记得将文件标记为源代码不然无法运行创建完成后点击file点击files......
  • 三丰主机数据库对外使用操作
    设备mysql数据库对外使用的方法:一、找到使用电脑的互联网IP二、进行界面设置  通过以上设置,就可以正常访问数据库了......
  • 了解异步 JavaScript
    了解异步JavaScriptphotofromunsplash介绍我发现异步JavaScript是大多数初学者最容易混淆的概念之一。我也不容易掌握。虽然我看了很多教程,也阅读了很多关于它的......
  • 为什么在Javascript中声明之前可以访问变量?
    为什么在Javascript中声明之前可以访问变量?毫无疑问,当今最常用和最著名的语言之一是JavaScript,如今它无处不在,我们可以创建Web应用程序和系统,在后端开发API并创建移......
  • 使用 QuickSort 算法解决排序数组
    使用QuickSort算法解决排序数组这里我们将讨论一个案例,如何将一系列数字以随机排列的数组的形式排序,使其成为从最小到最大的数字序列。我们将使用最后一个元素的方法......
  • java - 获取视频的第n帧画面,支持avi、mp4、wmv格式
    1.背景网上的东西真实够坑的,用不了就算了,还基本是复制粘贴2,解决需要导包,必须是这两个版本<dependency><groupId>org.bytedeco</groupId><......
  • Java入门-程序员的世界“Hello,World!”
    HelloWorld!java大小写敏感,尽量使用英文,用英文符号使用cmd输出建文件夹存放代码,新建Java文件,编写代码如下,编译javacjava,生成class文件,运行class文件:publicclassHell......
  • Java入门-编程环境搭建和IDEA软件安装
    JDK8下载安装若之前下载过JDK,则卸载JDK:删除java的安装目录、删除JAVA_HOME、删除path下关于java的目录、cmdjava_version安装JDK:百度JDK8、找到下载地址、同意协议、下......
  • Codesys提升程序运行效率之AND_THEN、OR_ELSE运算符的使用
    之前看到有博文写Codesys程序编写标准中有一条,多个判断条件的if-else-语句,可能性最大的条件应放到最前面,这样可减少PLC处理的时间。但是根据测试,情况并非如此。下面的例子......