Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Java программирование > Общие вопросы по Java, Java SE, Kotlin
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 06.09.2010, 17:56   #1
RIO
Форумчанин
 
Аватар для RIO
 
Регистрация: 15.12.2007
Сообщений: 422
По умолчанию Большой факториал на BigInteger

Здравствуйте ! Написал функцию для нахождения факториала большего числа, при попытке вывести 1000 факториал, все нормально работает, но когда хочу посчитать 10000, то программа делает вычисление и в консоль ничего не выводит. Я заметил, что в строку число записывается, а в консоль почему-то не выводиться. Как же сделать так, что бы и в консоль нормально выводился результат ? И еще вопрос, я где-то встречал, что программу которая использует тип BigInteger, можно так настроить, что бы она большие числа выводила полностью или в короткой форме, как это сделать ? А вот мой код :

Код:
import java.math.BigInteger;

public class Factorial
{
	private static BigInteger F(long N)
	{
		if (N == 0 || N == 1)
			return new BigInteger("1");
		BigInteger R = new BigInteger("1");
		for(int I = 2; I <= N; I++)
			R = R.multiply(new BigInteger(String.valueOf(I)));		
		return R;
		
	}
	
	public static void main(String[] args)
	{
		BigInteger A = F(10000);
		String B = A.toString();
		System.out.println(B);
	}
}
RIO вне форума Ответить с цитированием
Старый 07.09.2010, 09:55   #2
Fox
линуксоид
Форумчанин
 
Аватар для Fox
 
Регистрация: 02.11.2006
Сообщений: 157
По умолчанию

что то мне подсказывает что факториал 10000 переваливает за максимальное значение типа Long.
Fox вне форума Ответить с цитированием
Старый 09.09.2010, 10:40   #3
BleStaR
Форумчанин
 
Регистрация: 25.09.2009
Сообщений: 234
По умолчанию

RIO у меня итог выводится, но он не вмещается в одну строку для вывода.

попробуй вместо
Код:
System.out.println(B);
поставить
Код:
System.out.println("B.length() = "+B.length());
                for(int i=0; i<B.length(); )
		   System.out.println(B.substring(i, i+=(i==35000?660:5000) ));
BleStaR вне форума Ответить с цитированием
Старый 12.09.2010, 10:32   #4
RIO
Форумчанин
 
Аватар для RIO
 
Регистрация: 15.12.2007
Сообщений: 422
По умолчанию

Огромное спасибо
RIO вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Факториал Dracula777 Помощь студентам 4 26.02.2010 22:56
корень из большого числа BigInteger motorway Общие вопросы .NET 5 09.12.2009 11:35
Факториал. dimka660i Помощь студентам 11 10.10.2009 23:28
факториал в си++ Sjava Помощь студентам 1 21.12.2008 12:17
Факториал в C++ slog Помощь студентам 2 03.12.2008 07:56