范例-控制台-连续正整数改进版

对范例库中控制台下的连续正整数做了改进,大家可以一试。

原版:

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()

你可能感兴趣的:(范例-控制台-连续正整数改进版)