对范例库中控制台下的连续正整数做了改进,大家可以一试。
原版:
io.open();
str = /*连续正整数
一个正整数有可能可以被表示为n(n>=2)个连续正整数之和,如:
15=1+2+3+4+5
15=4+5+6
15=7+8
请编写程序,根据输入的任何一个正整数,找出符合这种要求的所有连续正整数序列
*/
io.print(str);
var n;
do{
io.print('请输入一个非零整数');
n = tonumber( io.stdin.read() );
}while( !n )
io.print('')
for i=1;n/2+1;1 {
var k = 0;
var j2 =0;
for j =i;n/2+1;1 {
k = k + j;
j2=j;
if(k == n){ break };
};
if(k==n){
var out = n+' = '+i;
for y=i+1;j2;1 {
out = out+' + '+y
};
io.print(out);
};
};
execute("pause") //按任意键继续
io.close()
改进版:
io.open();var A;
do{
execute("cls")
io.print('请输入一个非零整数');
A = tonumber( io.stdin.read() );
}while( A<=0 || A!=math.floor(A) )
for m=2;math.sqrt(2*A) {
var n=(A-m*(m+1)/2)/m
if n>=0 && n==math.floor(n){
var out = A+'='+(n+1);
for i=2;m
out=out+'+'+(n+i)
io.print(out)
}
}
execute("pause")
io.close()