Форум программистов, компьютерный форум CyberForum.ru
Наши страницы

Большие факториалы - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ помогите подредактировать программу http://www.cyberforum.ru/cpp-beginners/thread347482.html
помогите исправить программу так, чтобы b могла принимать любое задаваемое значение из интервала и можно ли это сделать с помощью char ? #include <math.h> #include <conio.h> #include...
C++ Копирование содержимого одного текстового файла в другой Открытие одного текстового файла и создание другого с записью в него информации с первого открытого файла, делал так как знал короче говоря он в создаваемый файл записывает информацию с первого но... http://www.cyberforum.ru/cpp-beginners/thread347467.html
C++ Игра "Жизнь"
Всем привет. Взялся за написание "Жизни", столкнулся с непонятными багами. Вот мой код (сначала хочу проверить алгоритм на небольших массивах): #include <iostream> using namespace std; void...
С Java на C++ можно ли конвертировать? C++
Есть маленькая программка на Java: фрактальный вихрь. Можно ли её конвертировать на C++ ? Сам не силен в программировании. вот код на Java public Image createImage() { BufferedImage image =...
C++ Таблица факториалов http://www.cyberforum.ru/cpp-beginners/thread347413.html
На сайте http://www.habit.ru/33/348.html приводится таблица факториалов, но не все значения (как мне кажется) в ней правильны, например, 50! Или моя программа не так считает. Кто-нибудь может...
C++ Глобальная константа Глобальные константы В С глобальная константа, т. е. инициализированная глобальная переменная с модификатором const, имеет своей областью действия всю программу (доступна для внешней компоновки),... подробнее

Показать сообщение отдельно
M128K145
Эксперт С++
8288 / 3508 / 143
Регистрация: 03.07.2009
Сообщений: 10,706
03.09.2011, 00:16
grizlik78, я ж не спорю Это решение в лоб, есть же еще более быстрые приближенные вычисления. Тем более в моем способе используется слишком много арифметики и он реализован на массиве.
К примеру на той же Java(а этот способ был изначально написан на Java, а потом переписан на C# и C++) можно использовать встроенные типы, например BigInteger. Тогда время вычисления сокращается до 44 секунд
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
import java.math.BigInteger;
import java.util.Date;
 
/**
 * The Class Main.
 * 
 * Created on: 02.09.2011
 * 
 * @author: M128K145
 */
public class Main {
 
   /**
    * The main method.
    * 
    * @param args
    *           the arguments
    */
   public static void main(String args[]) {
      Date start = new Date();
      BigInteger fact = BigInteger.ONE;
      for (int i = 1; i < 100000; ++i)
         fact = fact.multiply(new BigInteger(i + ""));
      Date end = new Date();
      System.out.println("Result: " + fact.toString());
      System.out.println("Time: " + (end.getTime() - start.getTime()));
 
   }
}
Кстати, в 100000! ровно 456569 разрядов
0
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru