Multiply two strings Java
- Get link
- X
- Other Apps
PROGRAM TO MULTIPLY LARGE NUMBERS REPRESENTED AS STRINGS
class
MAIN{
// Multiplies str1 and str2, and prints result.
static
String multiply(String num1, String num2)
{
int
len1 = num1.length();
int
len2 = num2.length();
if
(len1 ==
0
|| len2 ==
0
)
return
"0"
;
// will keep the result number in vector
// in reverse order
int
result[] =
new
int
[len1 + len2];
// Below two indexes are used to
// find positions in result.
int
i_n1 =
0
;
int
i_n2 =
0
;
// Go from right to left in num1
for
(
int
i = len1 -
1
; i >=
0
; i--)
{
int
carry =
0
;
int
n1 = num1.charAt(i) -
'0'
;
// To shift position to left after every
// multipliccharAtion of a digit in num2
i_n2 =
0
;
// Go from right to left in num2
for
(
int
j = len2 -
1
; j >=
0
; j--)
{
// Take current digit of second number
int
n2 = num2.charAt(j) -
'0'
;
// Multiply with current digit of first number
// and add result to previously stored result
// charAt current position.
int
sum = n1 * n2 + result[i_n1 + i_n2] + carry;
// Carry for next itercharAtion
carry = sum /
10
;
// Store result
result[i_n1 + i_n2] = sum %
10
;
i_n2++;
}
// store carry in next cell
if
(carry >
0
)
result[i_n1 + i_n2] += carry;
// To shift position to left after every
// multipliccharAtion of a digit in num1.
i_n1++;
}
// ignore '0's from the right
int
i = result.length -
1
;
while
(i >=
0
&& result[i] ==
0
)
i--;
// If all were '0's - means either both
// or one of num1 or num2 were '0'
if
(i == -
1
)
return
"0"
;
// genercharAte the result String
String s =
""
;
while
(i >=
0
)
s += (result[i--]);
return
s;
}
// Driver code
public
static
void
main(String[] args)
{
String str1 =
"1235421415454545454545454544"
;
String str2 =
"1714546546546545454544548544544545"
;
if
((str1.charAt(
0
) ==
'-'
|| str2.charAt(
0
) ==
'-'
) &&
(str1.charAt(
0
) !=
'-'
|| str2.charAt(
0
) !=
'-'
))
System.out.print(
"-"
);
if
(str1.charAt(
0
) ==
'-'
&&
str2.charAt(
0
) !=
'-'
)
{
str1 = str1.substring(
1
);
}
else
if
(str1.charAt(
0
) !=
'-'
&&
str2.charAt(
0
) ==
'-'
)
{
str2 = str2.substring(
1
);
}
else
if
(str1.charAt(
0
) ==
'-'
&&
str2.charAt(
0
) ==
'-'
)
{
str1 = str1.substring(
1
);
str2 = str2.substring(
1
);
}
System.out.println(multiply(str1, str2));
}
}
OUTPUT
2118187521397235888154583183918321221520083884298838480662480
- Get link
- X
- Other Apps
Comments
Post a Comment