java数字计算拆分

来源:百度知道 编辑:UC知道 时间:2024/05/04 09:00:58
请讲一下思路:
要求输入任意一个数字,然后拆分,拆除来的数要小于10, 例如:输入75 那就拆分成
8*9+3 输入72,拆成8*9 但要拆成最短的,比如8*9和2*2*2*3*3这两个要拆成8*9 最短
我是初学JAVA 请不要用太高级的知识,说明一下思路,谢谢
补充下
所拆的数字确实只能用九九乘法表的运算方式来拆,并且输入的数字不能大于161(81+81),原题是要求先输出乘法表(easy),后按照乘法表的计算规则去将一个数拆分并显示所有能得到这个数的乘运算,两个乘数都不能大于10

A*B+C 中A、B不会大于或等于10,161:(A)9*(B)9+(C)9*9(81)
c可以不拆分

首先,写一个类test,其中有个方法能够将一个数分解成质因数,并且检测是否含有除了2,3,5,7外的元素(分解方法是经典,网上都有的),通过上面的方法可以将测试的数都表示成为2,3,5,7的某次方
再写一个类findshort,其中有个方法要实现如下功能:
下面先作分析,一方面5,7不能被合并了,因为如果一和的话会出现大于或者等于10的数,所以说剩下的就是2,3两个数
另一方面2,3组合方式有(小于10)2,3,4,6,8,9,并且只有这几种情况,如果要乘法短的话,尽量使每个因数大
将通过test中方法的数依此:先用9除,如果除尽,那么再用9,直到不能用9除,然后是8,6,4,3,2,将能除尽的记录到数组record[i]中
最后是个带main的主类,里面有个方法是将每一个要拆的数-1返回得测试数,-2得测试数...-9得测试数,如果测试通过的话就不再进行减法操作,该方法内还有个记录减数的
最后由一个数组来记录结果,print出来

haha,还是我的完善...

那144可以拆分成 2×8×9 吗?(3个乘数)
楼主 161啊 不是162 162是:(A)9*(B)9+(C)9*9(81)
81+81=162

试试这个吧
int x=161;//设定的数
String s=null;//拆分表达式
boolean b=false;//判断是否跳出循环
boolean a=false;//判断是否x大于81
if(x>81){
x=x-81;
a=true;
}
for(int i=1;i<=9;i++)
{
for(int j=1;j<=i;j++)
{
if(i*j==x)
{
s=j+"×"+i;
b=true;
break;
}
if(i*j>x&&x>9)
{
s=(j-1)+"×"+i