易语言:把一个整数分解成三个整数乘积

我现在在写一个计算产品装外箱的程序,中间出了点问题,就是当输入任意一个数量时,会自动分成三个整数的乘积,比如:当我输入:12时,会显示如下装法:
1x12x1=12
1x2x6=12
1x3x4=12
2x3x2=12
2x6x1=12
3x2x2=12
3x4x1=12
.........等等,必须是三个整数,请问高手,这个算法怎么实现?
谢谢!!

我大致写了一个,把长,宽,高都限制在100以内 可以更大但是程序就慢了。你可以参考着写,网速慢,图片传不上。
------------------------------------------------begin---------------------------------------------------------------

.版本 2
.程序集 窗口程序集1
.子程序 子程序1
.局部变量 长, 整数型
.局部变量 宽, 整数型
.局部变量 高, 整数型
.局部变量 乘积, 整数型
乘积 = 到数值 (编辑框1.内容)
.计次循环首 (100, 长)
.计次循环首 (100, 宽)
.计次循环首 (100, 高)
.如果 (长 × 宽 × 高 = 乘积)
列表框1.加入项目 (到文本 (长) + “x” + 到文本 (宽) + “x” + 到文本 (高) + “=” + 到文本 (乘积), )
.否则
.如果结束
.计次循环尾 ()
.计次循环尾 ()
.计次循环尾 ()
.子程序 _按钮1_被单击
列表框1.清空 ()
子程序1 ()

-----------------------------------------------------end-----------------------------------------------------------
复制中间代码到易语言然后粘贴就OK了,创建一个文本框 一个 列表框和一个按钮 就能正常使用了,不明白的 百度HI我追问

谢谢,但是还有一个问题:我想将其分列写入到列表框,怎么实现?
如:
列1 列2 列3
1 1 6
1 2 3
1 3 2
1 6 1

追答

界面如下:

程序如下:

-----------------------------------------begin-----------------------------------------------------------------


.版本 2

.支持库 iext

.程序集 窗口程序集1

.子程序 子程序1

.局部变量 长, 整数型

.局部变量 宽, 整数型

.局部变量 高, 整数型

.局部变量 乘积, 整数型

.局部变量 索引, 整数型

乘积 = 到数值 (编辑框1.内容)

.计次循环首 (100, 长)

    .计次循环首 (100, 宽)

        .计次循环首 (100, 高)

            .如果 (长 × 宽 × 高 = 乘积)

                索引 = 超级列表框1.插入表项 (, , , , , )

                超级列表框1.置标题 (索引, 0, 到文本 (长))

                超级列表框1.置标题 (索引, 1, 到文本 (宽))

                超级列表框1.置标题 (索引, 2, 到文本 (高))

                超级列表框1.置标题 (索引, 3, 到文本 (乘积))

            .否则

            .如果结束

        .计次循环尾 ()

    .计次循环尾 ()

.计次循环尾 ()

.子程序 _按钮1_被单击

超级列表框1.全部删除 ()

子程序1 ()


--------------------------------------------------end------------------------------------------------------------

用法跟上面的一样  创建一个文本框 一个超级列表框 和一个按钮

温馨提示:答案为网友推荐,仅供参考
第1个回答  2013-01-15
.版本 2
.子程序 _按钮2_被单击
.局部变量 循环1, 整数型
.局部变量 循环2, 整数型
.局部变量 a, 整数型
.局部变量 b, 整数型
.局部变量 局_数值, 整数型
局_数值 = 到数值 (编辑框1.内容)
循环1 = 绝对取整 (求平方根 (局_数值))
编辑框2.内容 = “”
.计次循环首 (循环1, a)
.如果真 (局_数值 % a ≠ 0)
到循环尾 ()
.如果真结束
循环2 = 绝对取整 (求平方根 (局_数值 ÷ a))
.计次循环首 (循环2, b)
.如果真 (循环2 % b ≠ 0 或 局_数值 % a × b ≠ 0)
到循环尾 ()
.如果真结束
编辑框2.加入文本 (到文本 (a) + “×” + 到文本 (b) + “×” + 到文本 (局_数值 ÷ a ÷ b) + “=” + 编辑框1.内容 + #换行符)
.计次循环尾 ()
.计次循环尾 ()

速度很快。。数据可以很大追问

你好,这样是挺快,但是没有计算完啊。
比如输入数值:6,应该有9种算法:
1x1x6=6
1x2x3=6
1x3x2=6
1x6x1=6
2x1x3=6
2x3x1=6
3x1x2=6
3x2x1=6
6x1x1=6

3x2x1
6x1x1

追答

因为那些都是重复的。不需要算出来

本回答被网友采纳
第2个回答  2013-01-15
额,,,我数学不好

试试穷举