所以我有这行代码。它给了我628的输出。你们知道为什么吗?我不知道有人想打印什么样的数字。
System.out.println( IntStream.range(1,30).filter(n -> IntStream.range(1,n).filter(i->n%i == 0).sum() ==n)
.boxed().collect(Collectors.toList()));发布于 2022-04-12 14:21:44
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之间的所有数字,其中除数之和为数字本身。这些被称为完全数。前两个分别是6和28,然后是496,.
https://stackoverflow.com/questions/71844177
复制相似问题