将一个正整数拆分成若干个互不相同的正整数且乘积最大(JS)
来源:互联网 发布:dnf制卡辅助与端口辅助 编辑:程序博客网 时间:2024/05/29 15:56
在红殿群里有人问到这个问题。想了想,这与其说是个编程题,不如说是个数学问题,算法只要想到了并不难。
<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>
<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>
0 0
- 将一个正整数拆分成若干个互不相同的正整数且乘积最大(JS)
- 将一个正整数拆分成若干个互不相同的正整数且乘积最大(JS)
- 把自然数N分解成若干个互不相同的正整数,使乘积最大
- 贪心算法——输入任意一个正整数N,将其分成多个互不相同的整数,和为N,乘积最大
- 对于1个正整数N,将其拆分成几个正整数的和,如何拆分可使得其乘积最大?
- [算法]将一个正整数拆分成若干个正整数的和,输出所有的结果不重复
- 有一个正整数N可以分解成若干个正整数之和,问如何分解能使这些数的乘积最大?
- 一个正整数n被分成若干个不同自然数的和,求组成n的一组自然数的最大乘积
- 将100拆成任意个正整数的和,求最大乘积
- 使一个正整数分解为若干整数,使其各个数的乘积最大
- 360笔试---将一个数拆分成若干个素数的乘积并打印
- FOJ 1075假设x是一个正整数,它的值不超过65535(即1<x<=65535),将x分解为若干个素数的乘积。
- c++ 正整数拆分成素因子的乘积
- (Relax 水题1.2)POJ 1032 Parliament(将n分解成若干个互不相等的整数的和,并且是这些整数的乘积最大)
- 设有n个正整数,将他们连接成一排,组成一个最大的多位整数。
- 设有n个正整数,将他们连接成一排,组成一个最大的多位整数
- 正整数分拆使乘积最大
- 将正整数n划分成k个不同正整数的乘积,输出所有划分方法
- php 解决:502 bad gateway
- JVM基本概念
- MySQL 数据类型
- mac 升级 bash
- tomcat 字符编码问题 URIEncoding="UTF-8"
- 将一个正整数拆分成若干个互不相同的正整数且乘积最大(JS)
- (POJ 1947)Rebuilding Roads <树型DP>
- 人只要脾气好,凡事就会好
- 检测点9.2
- springMVC源码分析--HandlerMethodReturnValueHandlerComposite返回值解析器集合(二)
- 透视学理论(十)
- PHP实现微信开放平台扫码登录源码下载
- 基于web的全景漫游自动生成加编辑平台的技术实现(四)----添加热点
- day 04 考不完的试