Условие задачи: Реализуйте метод, вычисляющий факториал заданного натурального числа. Факториал NN вычисляется как 1⋅2⋅...⋅N1⋅2⋅...⋅N. Поскольку это очень быстро растущая функция, то даже для небольших NN вместимости типов int и long очень скоро не хватит. Поэтому будем использовать BigInteger.
Задачу получилось решить только в int-овом поле, ну это так для того чтобы понимать что к чему. Но не получается обернуть код в обертку BigInteger. Возможно ли BigInteger запихнуть в цикл for или иду неправильным путем?
public class Factorial {
public static void main(String[] args) {
System.out.println(factorial(10));
}
public static int factorial(int value) {
int x = 1;
for (int i = 1; i <= value; i++){
x = x * i;
}
return x;
}
}
Вот собственно решение через int, но как начинаю числа оборачивать в BigInteger - компилятор люто негодует. Дайте наводку, пож-а.
Для умножения BigInteger используйте функцию multiply.
import java.util.*;
import java.lang.*;
import java.io.*;
import java.math.*;
class Factorial
{
public static void main (String[] args) throws Exception
{
Scanner in = new Scanner(System.in);
int n = in.nextInt();
System.out.println(factorial(n).toString());
}
public static BigInteger factorial(int n)
{
BigInteger res = BigInteger.valueOf(1);
for (int i = 2; i <= n; i++){
res = res.multiply(BigInteger.valueOf(i));
}
return res;
}
}
Вот собственно мое решение, моя проблема была именно в неумении правильно оборачивать переменные в обертку от BitInteger:
public class Factorial {
public static void main(String[] args) {
System.out.println(factorial(5));
}
public static BigInteger factorial(int value) {
BigInteger v = BigInteger.valueOf(value);
BigInteger s = BigInteger.valueOf(1);
for (long i = 1; i <= value; i++){
BigInteger i2 = BigInteger.valueOf(i);
s = s.multiply(i2);
}
return s; // your implementation here
}
}
Я пытаюсь портировать на Ubuntu свое приложение, построенное на SWT, и столкнулся с проблемой с тназ
Не подключается к удаленному серверу:
Дали задание создать свою реализацию TreeSet, в котором должны быть методы add(E e) и List<E> get()