我正在尝试从维基百科实现 Karatsuba 的算法,但我无法继续编码,因为我不知道如何将整数拆分为下半部分和上半部分。例如,如果我们有一个整数 223,那么它应该被拆分为两个整数 22 和 3。
我怎么可能做到这一点?
所以它必须是这样的
num1 = 223;
这里发生了一些神奇的事情!
low1 = 22;
low2 = 3;
非常感谢您,非常感谢您的帮助!
low1 = num1 / 10;
low2 = num1 % 10;
这是您要完成的工作的要点。我不熟悉该算法以及您到底要做什么,因此几乎肯定需要额外的逻辑,但这是一个很好的起点。
您可以使用模数 ( %
) 运算符从数字中提取数字。例如
12345 % 10 = 5
12345 % 100 = 45
12345 % 1000 = 345
等等。希望这可以帮助。
I would suggest this algorithm to split an integer :
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());
您可以使用模数 (%) 运算符删除整数的最后一个数字
int num1 = 223;
int num2 = num1%10;
num2 = 3 在这种情况下