这行 Java 流是什么意思?
What does this line of Java stream mean?
所以我有这行代码。它给了我输出 [6,28]。
你们知道为什么吗?我不知道有人试图打印什么样的数字。
System.out.println( IntStream.range(1,30).filter(n -> IntStream.range(1,n).filter(i->n%i == 0).sum() ==n)
.boxed().collect(Collectors.toList()));
IntStream.range(1,n).filter(i -> n % i == 0).sum() == n
通过检查 n
除以潜在除数是否没有余数 (i -> n % i == 0
) 来计算 n
的所有除数。然后将所有除数相加并与 n
本身进行比较。
IntStream.range(1,30).filter(n -> ...).boxed().collect(Collectors.toList())
只是对 1 到 30 之间的数字执行我上面描述的操作,并且只保留那些比较为 true
的数字。因此,它计算 1 到 30 之间的所有数字,其中除数总和为数字本身。这些被称为 perfect numbers。前两个是6和28,后面是496,...
所以我有这行代码。它给了我输出 [6,28]。 你们知道为什么吗?我不知道有人试图打印什么样的数字。
System.out.println( IntStream.range(1,30).filter(n -> IntStream.range(1,n).filter(i->n%i == 0).sum() ==n)
.boxed().collect(Collectors.toList()));
IntStream.range(1,n).filter(i -> n % i == 0).sum() == n
通过检查 n
除以潜在除数是否没有余数 (i -> n % i == 0
) 来计算 n
的所有除数。然后将所有除数相加并与 n
本身进行比较。
IntStream.range(1,30).filter(n -> ...).boxed().collect(Collectors.toList())
只是对 1 到 30 之间的数字执行我上面描述的操作,并且只保留那些比较为 true
的数字。因此,它计算 1 到 30 之间的所有数字,其中除数总和为数字本身。这些被称为 perfect numbers。前两个是6和28,后面是496,...