3

我正在尝试从维基百科实现 Karatsuba 的算法,但我无法继续编码,因为我不知道如何将整数拆分为下半部分和上半部分。例如,如果我们有一个整数 223,那么它应该被拆分为两个整数 22 和 3。

我怎么可能做到这一点?

所以它必须是这样的

num1 = 223;

这里发生了一些神奇的事情!

low1 = 22;
low2 = 3;

非常感谢您,非常感谢您的帮助!

4

4 回答 4

5
low1 = num1 / 10;
low2 = num1 % 10;

这是您要完成的工作的要点。我不熟悉该算法以及您到底要做什么,因此几乎肯定需要额外的逻辑,但这是一个很好的起点。

于 2013-11-07T01:51:05.700 回答
3

您可以使用模数 ( %) 运算符从数字中提取数字。例如

12345 % 10   = 5
12345 % 100  = 45
12345 % 1000 = 345

等等。希望这可以帮助。

于 2013-11-07T01:58:42.943 回答
0

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());
于 2013-11-07T02:25:25.397 回答
0

您可以使用模数 (%) 运算符删除整数的最后一个数字

int num1 = 223;
int num2 = num1%10;

num2 = 3 在这种情况下

于 2013-11-07T01:52:59.323 回答