一个正整数有可能可以被表示为 n(n>=2) 个连续正整数之和

 我来答
匿名用户
2013-06-20
展开全部
正整数有可能可以被表示为n(n>=2)个连续正整数之和,如:

  15=1+2+3+4+5

  15=4+5+6

  15=7+8

  请编写程序,根据输入的任何一个正整数,找出符合这种要求的所有连续正整数序列。

考虑到等差数列,从而大概判断数列长度,然后得到数值.在输入整数7位长度以内,还是能很快的计算出来结果,9为长度的时候就死机了感觉.应该在运算的时候有更好的关于长度的算法,比如字符串的滑块移动算法一样,不过我一下子想不出来怎么做.只能用这种循环了.

private String Result(UInt64 Input)
{
String result = String.Empty;
for (UInt32 i = 2; i <=(UInt32) System.Math.Sqrt(Input * 2); i++)
{
if ((Input / i) <= (i - 1) / 2)
continue;
switch (i%2)
{
case 0 :
if (((float)(Input % i)/(float)i)==0.5)
result = result + i + '*';
else
break;
continue;
case 1 :
if ((Input % i) == 0)
result = result + i + '*';
else
break;
continue;
}
}
if(String.IsNullOrEmpty(result))
return "没有符合的整数";
UInt32[] temp = Array.ConvertAll<String, UInt32>(result.Trim('*').Split('*'),new Converter < String, UInt32 >(Conver));
result = String.Empty;
foreach (UInt32 j in temp)
{
for (UInt32 k = 0; k < j; k++)
{
result = result + (((float)Input / (float)j) - (((float)(j - 1)) / 2.0) + k).ToString()+" ";
}
result = result + System.Environment.NewLine;
}
return result;

}
public static UInt32 Conver(String Value)
{
return Convert.ToUInt32(Value);
}
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式