以特定格式打印某个整数的因子

时间:2018-05-09 13:26:14

标签: java

我想知道如何使用for循环的因子打印格式中任何整数的因子(sum = factor + factor ... = sum> num)。 我再次成为一名学生,请轻松一下,这段代码给我压力。 (在提供的代码中,我们已经找到了因素,我们希望它以特定格式打印)

import java.util.*;

public class Abundant {
    public static void main(String [] args) {

        Scanner input = new Scanner(System.in);

        int num = 0;
        int sum = 0;
        int output = 0;

        System.out.println("Enter an integer:");
        num = input.nextInt();
        System.out.println("The factors of " +num + " are:");
        for (int i = 1; i < num; i++) {
            if (num % i == 0) {
                System.out.println(i);
                sum += i;
            }
        }
    }
}  

2 个答案:

答案 0 :(得分:2)

首先,您需要解决因素。

所以问问自己这些问题:

  1. 如何测试数字F是否是另一个数字N的因子?换句话说,一个因素的数学定义是什么?提示:reference

  2. 鉴于我知道如何测试一个数字是否是另一个数字的因素,我如何找到所有因素?提示:想一个循环。

  3. 有了这些问题的答案,编写执行此操作的程序只需要一小步。

    实际上......我觉得你可能会使用“因子”这个词来表示除数学因素之外的其他东西。如果是这样,我们需要在您的问题中提供更明确的解释。

答案 1 :(得分:0)

救援的

Java Streaming API

int num = ...
String factors = IntStream.rangeClosed(1, num) // all numbers from 1..num, inclusive
    .filter(i -> num % i == 0) // only those by which num can be divided
    .mapToObj(String::valueOf) // as strings
    .collect(Collectors.joining(" + ")); // concatenated with ' + '

System.out.printf("Factors of %d: %s", num, factors);

num = 96的输出示例:

  

因素96:1 + 2 + 3 + 4 + 6 + 8 + 12 + 16 + 24 + 32 + 48 + 96

老派方式:
连接时,你需要记住一个状态(除了第一个之外的所有因素都有&#39; +&#39; prepended):

boolean first = true;
System.out.printf("Factors of %d: ", num);
for (int i = 1; i <= num; i++) {
    if (num % i == 0) {
        if (!first) {
            System.out.print(" + ");
        }
        first = false;
        System.out.print(i);
    }
}

当然不如流解决方案那么优雅。