首页 > 解决方案 > 如何获得所有加起来形成一个数字的连续数字集?

问题描述

我想创建一个程序来生成一组连续的数字,这些数字加起来形成一个数字。例如。如果输入数字是 15,它应该给出 -

7, 8
4, 5, 6
1, 2, 3, 4, 5

一些公式/算法/循环可以做一些适合的事情。它可以生成一个数组或打印它。这似乎是一个数学问题或愚蠢的问题,但我实际上无法弄清楚如何在 Java 中以编程方式做到这一点。

请尝试提供可以执行此操作的确切代码。

标签: javaalgorithmloopsmath

解决方案


假设您的输入是 N。您知道每组 k 个连续数字将以 N/k 为中心。如果 N/k 以 0.5 结尾,则存在偶数 k 的解,如果 N/k 是整数,则存在奇数 k 的解。解决方案(如果存在)是以 N/k 为中心的 k 个整数。

k=1: 15/1 = 15, so 15 (trivial; may want to omit)
k=2: 15/2 = 7.5, so 7,8
k=3: 15/3 = 5, so 4,5,6
k=4: 15/4 = 3.75, so no solution
k=5: 15/5 = 3, so 1,2,3,4,5
k=6: 15/6 = 2.5, so 0,1,2,3,4,5 
etc...
k=15: 15/15 = 1, so -6,-5,-4,-3,-2,-1,0,1,2,3,4,5,6,7,8

您可以轻松修改它以限制正解或非负解。


推荐阅读