我正在尝试从维基百科实现Karatsuba的算法,我无法继续编码,因为我不知道如何将整数分成下半部分和上半部分。例如,如果我们有一个整数223,那么它应该被分成两个整数22和3。
我怎么可能这样做?
所以它必须像
num1 = 223;
这里发生了一些神奇的事情!
low1 = 22;
low2 = 3;
非常感谢,非常感谢您的帮助!
答案 0 :(得分:5)
low1 = num1 / 10;
low2 = num1 % 10;
这是你想要完成的事情的要点。我不熟悉算法以及你究竟想要做什么,因此几乎肯定需要额外的逻辑,但这是一个很好的起点。
答案 1 :(得分:2)
您可以使用模数(%
)运算符从数字中提取数字。例如
12345 % 10 = 5
12345 % 100 = 45
12345 % 1000 = 345
等等。希望这会有所帮助。
答案 2 :(得分:0)
您可以使用模数(%)运算符删除整数的最后一个数
int num1 = 223;
int num2 = num1%10;
在这种情况下num2 = 3
答案 3 :(得分:0)
我建议这个算法拆分一个整数:
int i = 233678546; /* The integer you would like to split */
int digitNumber = String.valueOf(i).length(); /* use java.math.Math.log10 if you need a more mathematical approach */
double val = Math.pow(10.0, (double)(digitNumber / 2));
int div = new Double(val).intValue();
int left = i / div;
int right = i % div;
StringBuilder sb = new StringBuilder();
sb.append("Value : ");
sb.append(i);
sb.append('\n');
sb.append("Left : ");
sb.append(left);
sb.append('\n');
sb.append("Right : ");
sb.append(right);
sb.append('\n');
System.out.println(sb.toString());