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>
<!--
/*
题目描述:
一个正整数有可能可以被表示为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>