在红殿群里有人问到这个问题。想了想,这与其说是个编程题,不如说是个数学问题,算法只要想到了并不难。 < head > < meta http - equiv = " Content-Type " content = " text/html; charset=gb2312 " /> < title > 拆分整数 </ title > </ head > < body > 请输入要拆分的正整数: < input type = " text " name = " number " /> < input type = " button " value = " 计算 " onclick = " splitnum(); " /> < script language = " javascript " > function splitnum() ... { var N=document.all.number.value; //定义正整数 var flag=true; //标志是否还能减下去,true 表真 var result=new Array(); //定义数组用来保存拆成的正整数 var key=2; //定义减数 var Last=N; //定义余数 var i=-1; //定义数组标号 if(N<=2) ...{ document.write("没有挑战性"); } else ...{ while(flag) ...{ Last=Last-key; //余数减去减数 if(Last>=0) //如果余数大于等于0 ...{ i++; //标号自加一 result[i]=key; //保存减数 } else //如果小于0,不能保存该减数。将余数拆成一个个1,从数组尾部开始加到数组的每一个元素,加完为止 ...{ flag=false; //终止循环 Last=Last+key; //恢复余数的值 while(Last>0) ...{ result[i]++; //从尾部开始每个元素加1 if(i==0) i=result.length-1; //特殊的,如果余数大于数组的长度,则返回再加一遍 else i--; //下标自减1 Last--; //余数自减1 } } key++; //减数自加一 } document.write("将"+N+"拆成:"); //document.write是往屏幕输出 var chengji=1; for(i=0;i<result.length;i++) //数组名.length是取得数组包含的元素个数 ...{ chengji=chengji*result[i]; document.write(result[i]); if(i!=result.length-1) document.write("+"); } document.write("乘积是:"+chengji); }} </ script > </ body > </ html >