一个小的算法问题解决

问题在这里:
http://twobug.cnblogs.com/archive/2005/09/30/247550.html

我的代码:

<SCRIPT LANGUAGE="JavaScript">
<!--
/*
题目描述:
    一个正整数有可能可以被表示为n(n>=2)个连续正整数之和,如:
    15=1+2+3+4+5
    15=4+5+6
    15=7+8
    请编写程序,根据输入的任何一个正整数,找出符合这种要求的所有连续正整数序列。

    solved by Neil Chen, 2005-10-1
*/

// 解决问题
function solve(k) {
    
var result = new Array();
    
    
for (var m = 1; m < k/2; m++) {
        
for (var n = m + 1; n <= (k+1)/2; n++) {
            
if ((m + n) * (n - m + 1)/2 == k)
                result[result.length] 
= [m, n];
        }
    }
    
return result;
}

// 打印结果
function printResult(result) {
    
if (result.length > 0) {
        
for (var i = 0; i < result.length; i++) {            
            
for (j = result[i][0]; j <= result[i][1]; j++) {
                document.write(j 
+ " ");
            }
            document.write(
"<br/>");
        }
    }
    
else {
        document.write(
"NONE");
    }        
}

// 测试
document.write("solve 15:<br/>");
printResult(solve(
15));

document.write(
"<br/>");

document.write(
"solve 16:<br/>");
printResult(solve(
16));

//-->
</SCRIPT>

posted on 2005-10-01 01:04 NeilChen 阅读(...) 评论(...) 编辑 收藏

导航

统计