我想知道如何使用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;
}
}
}
}
答案 0 :(得分:2)
首先,您需要解决因素。
所以问问自己这些问题:
如何测试数字F是否是另一个数字N的因子?换句话说,一个因素的数学定义是什么?提示:reference。
鉴于我知道如何测试一个数字是否是另一个数字的因素,我如何找到所有因素?提示:想一个循环。
有了这些问题的答案,编写执行此操作的程序只需要一小步。
实际上......我觉得你可能会使用“因子”这个词来表示除数学因素之外的其他东西。如果是这样,我们需要在您的问题中提供更明确的解释。
答案 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);
}
}
当然不如流解决方案那么优雅。