zoukankan      html  css  js  c++  java
  • 寻找x之内(包含本身)的完全数 Java

    • 寻找完全数 

    题目描述

    一个数如果恰好等于它的因子之和,这个数就称为"完数"。 例如,6的因子为1、2、3,而6=1+2+3,因此6是"完数"。 编程序找出N之内的所有完数,并按下面格式输出其因子:

    输入

    N

    1=<N<=30000

    输出

    ? its factors are ? ? ?

    样例输入

    1000

    样例输出

    6 its factors are 1 2 3 
    28 its factors are 1 2 4 7 14 
    496 its factors are 1 2 4 8 16 31 62 124 248 

    解题思路: 先求因子数 但这道题的因子很显然没有本身 且 因子不可能超过自己的一半 那么我们就直接循环 i / 2次就好了, 再循环里:累加因子的值 如果累加的值 等于本身 那么他就是完全数 此时要注意的是 判断累加因子值是否等于本身 这个判别式要放在内循环外 因为如果不放 就会有 “24”BUG  因为24的因子有  “24 its factors are 1 2 3 4 6 8 12”
    如果你放在内循环里 就判断到1 2 3 4 6 8 就会等于24  显示24 是完全数  其实24并不是完全数  因为后面有个 12 ,这个BUG值得去学习。代码如下:认真看注释:

    import java.util.*;
    public class Main{
        public static void main(String[] args) {
            Scanner sc = new Scanner(System.in);
            int num = sc.nextInt(),sum = 0; //num代表求num以内的值,sum代表累加因子数
            String str = " its factors are";    //定义字符串 作 ”中介”
            for(int i = 1;i<=num;i++) {         //循环num此
                str = " its factors are";       //每次循环前 让str回到初始值
                sum=0;                         //每次循环前 让sum回到初始值
                for (int j = 1; j <= i / 2; j++) {  //循环 i/2次 因为因子不可能超过自己本身一半(除了本身)
                    if (i % j == 0) {               //判断j是否是因子数
                        sum += j;                   //累加j(因子)的值
                        str += (" " + j);           //把因子前面加空格 并 转换成字符串 累加到str中
                        }
                }
                if (sum == i) {                     //注意这一步!为什么不放在内循环里面 因为放在内循环里面会出现24 BUG,即求出所有因字数后再判断
                    System.out.println(i + str);          //输出i(完全数)+str(累加的str)
                }
            }
        }
    
    }

    完。

    本文来自博客园,作者:咸瑜,转载请注明原文链接:https://www.cnblogs.com/bi-hu/p/14000584.html

  • 相关阅读:
    训练集(Train),验证集(Validation)和测试集(Test Sets)以及交叉验证法
    看完了这篇实时数仓建设,才发现以前的都白看了(内有美团案例)
    PA模块常用表
    Workflow相关表简单分析
    总账balance表
    工作流转发功能实现
    iOS 使用AVAudioPlayer开发录音功能
    利用HTP工具包开发报表
    关于会话、进程、请求的几个常用SQL
    一些常用到的键弹性域和存其代码组合的表
  • 原文地址:https://www.cnblogs.com/bi-hu/p/14000584.html
Copyright © 2011-2022 走看看