2013-11-07 5 views
2

Я пытаюсь реализовать алгоритм Карацубы из википедии, и я не могу продолжать кодировать, так как не знаю, как разбить целое на нижнюю половину и верхнюю половину. Например, если у нас есть целое число 223, то оно должно быть разделено на два целых числа 22 и 3.Как разбить целое число на Java

Как я могу это сделать?

поэтому он должен быть чем-то вроде

num1 = 223; 

некоторые волшебный материал, что здесь происходит!

low1 = 22; 
low2 = 3; 

Большое спасибо, что я очень ценю вашу помощь!

+1

вы узнали о по модулю (%) операции? если вы этого не сделали, пойдите и проверьте это. :) – CodingBird

+0

Да, по модулю арифметика - ваш друг. –

+0

Вы могли бы легко сделать это, если бы вы сделали сумму цифр заданного целого :) – Lion

ответ

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

Это суть того, что вы пытаетесь достичь. Я не знаком с алгоритмом и что именно вы пытаетесь сделать, так что потребуется дополнительная логика, но это хорошая отправная точка.

+0

Я буду голосовать за этот ответ в течение 10 минут :) – user1917231

+0

@ user1917231, Голосовать? Нет, вы не можете сейчас, что требуется не менее 15 репутации. Вы можете прямо сейчас принять ответ. – Lion

0

вы можете использовать оператор модуля (%), чтобы удалить из последнего номера целого числа

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

num2 = 3 в этом случае

+0

Первая строка вашего ответа вводит в заблуждение и должна быть переформулирована. Например, '% 2' не возвращает последний номер (он может только возвращать' 0' или '1'). А фраза «убрать»? Исходный номер остается неизменным. – nhgrif

2

Вы можете использовать модуль (%) оператор извлечения цифры от числа. Например

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

И так далее. Надеюсь это поможет.

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()); 
Смежные вопросы