Java完美数嵌套for循环

标签 java numbers perfect-numbers

我在 friend 的帮助下做了这个,为了找到用户输入的数字的完美数字(除数之和=原始数字的数字)总和。有人可以帮我转换它,以便它在一行上打印每个数字,即使它不是一个完美的数字,并列出它的所有除数,那么如果它是完美的,它会在除数之后打印完美的数字?就像“6: 1, 2, 3, 6,完全数”一样,不使用数组?

import java.util.*;
public class PerfNumbers {  
public static void main(String[] args){     
    System.out.println("Enter A Number:");      
    Scanner sc = new Scanner(System.in);    
    int input = sc.nextInt();       
     int sumOfDivisors = 0;

             for (int number = 1; number <= input; number++){       
                 for (int divisor = 1; divisor < number; divisor++)
                 {  

                     if (number % divisor == 0)

                         sumOfDivisors += divisor;
                     }

                         if (sumOfDivisors == number)
                         {

                     System.out.println(number);
                     }

                         sumOfDivisors = 0;  
             }

    sc.close();
}

}

最佳答案

import java.util.*;

/**
 *
 * @author Tyler Weaver
 */
public class Test {

    public static void main(String[] args) {
        System.out.print("Enter A Number: ");
        Scanner sc = new Scanner(System.in);
        int input = sc.nextInt();
        int sumOfDivisors = 0;
        Collection<Integer> col = new ArrayList<>();

        for (int number = 1; number <= input; number++) {
            for (int divisor = 1; divisor < number; divisor++) {

                if (number % divisor == 0) {
                    sumOfDivisors += divisor;
                    col.add(divisor);
                }
            }

            if (sumOfDivisors == number) {

                System.out.printf("Perfect Number: %,d%n[", number);
                for (Integer i : col) {
                    System.out.printf("%,d, ", i);
                }
                System.out.printf("\b\b]%n");
            }

            sumOfDivisors = 0;
            col.clear();
        }

        sc.close();
    }

}

刚刚添加了一个集合来跟踪除数,然后添加了一个 printf() 语句以正确格式化。

编辑:不使用集合的代码。

import java.util.*;

/**
 *
 * @author Tyler Weaver
 */
public class Test {

    public static void main(String[] args) {
        System.out.print("Enter A Number: ");
        Scanner sc = new Scanner(System.in);
        int input = sc.nextInt();
        int sumOfDivisors = 0;

        for (int number = 2; number <= input; number++) {
            System.out.printf("Number: %,d%n[", number);

            for (int divisor = 1; divisor < number; divisor++) {

                if (number % divisor == 0) {
                    sumOfDivisors += divisor;
                    System.out.printf("%,d, ", divisor);
                }
            }

            System.out.printf("\b\b]%n");

            if (sumOfDivisors == number) {
                System.out.printf("Therefore %,d is a perfect number.%n%n",
                        number);
            } else {
                System.out.printf("%n");
            }

            sumOfDivisors = 0;
        }

        sc.close();
    }
}

关于Java完美数嵌套for循环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26416706/

相关文章:

javascript - 如何显示多个用户输入的答案以及如何将其全部写入文本文件

Java 填充 <option> 下拉列表

java - JTextArea - 只有数字

c - 在 C 中经过一段时间后突破 double

C 程序制作完全数列表

java - 为什么 objectify 的 put() 函数不抛出异常?

html - 只允许数字进入输入文本框

javascript - 奇怪的 Javascript 代码显示错误的数字

c++ - 使用函数 C++ 查找完全数

java - 同一文件夹中的 Scala 导入类