如何在Java中拆分整数

3

我正在尝试从维基百科实现Karatsuba算法,但由于不知道如何将一个整数拆分为较低部分和较高部分,因此无法继续编码。例如,如果我们有一个整数223,则应将其拆分为两个整数22和3。

我该怎么做呢?

因此,它必须是以下内容:

num1 = 223;

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

low1 = 22;
low2 = 3;

非常感谢您的帮助!我真的非常感激!

1
你学过取模(%)运算吗?如果没有,去了解一下吧。 :) - CodingBird
没错,模算术是你的好帮手。 - Hot Licks
如果你对给定整数的各位数字求和,那么你可以很容易地做到这一点 :) - Lion
刚刚意识到!我现在头疼了!谢谢!模块! - user1917231
4个回答

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

以下是您尝试完成的要点。我不熟悉算法和您具体要做的事情,因此几乎肯定需要额外的逻辑,但这是一个很好的起点。


@user1917231,投票?不行,因为这需要至少15个声望。您可以现在接受答案。 - Lion

3
您可以使用模运算符(%)从数字中提取位数。例如:
12345 % 10   = 5
12345 % 100  = 45
12345 % 1000 = 345

希望这能帮到你。等等。


0
你可以使用模数(%)运算符来删除整数的最后一位数字。
int num1 = 223;
int num2 = num1%10;

在这种情况下,num2 = 3


你的回答第一行有误导性,需要重新措辞。例如,%2并不返回最后一个数字(它只能返回01)。而“remove out”这个短语呢?原始数字保持不变。 - nhgrif

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());

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接