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

Одномерный массив в MPIR (длинная арифметика) - C++

Восстановить пароль Регистрация
 
Coyote112358
0 / 0 / 0
Регистрация: 17.11.2009
Сообщений: 22
31.12.2011, 00:01     Одномерный массив в MPIR (длинная арифметика) #1
Не получается записать длинные числа в массив
Есть таблица значений функции
1 4
2 32
3 344
4 4460
5 66532
6 1118398
7 20984924
8 437500380
9 10105541204
10 257860425672
11 7241521734020
12 222770819826574
13 7466859257161488
14 271156951835070930
15 10609740515840572076
16 444982726973034212924
17 19911203110764903275188
18 946564783226311159219150
19 47631429404674467307773380
20 2528751817754976349706118326
21 141230550945276570635100088392
22 8276355199785795726294608142184
23 507729501918803287606319351173352
24 32538850685220441627440374250456290
25 2174335830863749936724371980412536172
26 151236326399950056297298993112649900850
27 10932105410468612099036188735215153271496
28 820044457045734108109109406561277222219168
29 63748873475180955339832071132429388775557556
30 5129407130436863270233731521113990193730440354
31 426694523629297006422022284190667711775649380560
и надо правый столбец записать в одномерный массив типа mpz

что-то ничего в документации не пойму
как это можно сделать?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
31.12.2011, 00:01     Одномерный массив в MPIR (длинная арифметика)
Посмотрите здесь:

Длинная арифметика N+1 C++
Длинная арифметика. C++
Длинная арифметика C++
C++ Длинная арифметика
C++ Длинная арифметика
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
alkagolik
 Аватар для alkagolik
1510 / 616 / 79
Регистрация: 15.07.2011
Сообщений: 3,552
31.12.2011, 01:02     Одномерный массив в MPIR (длинная арифметика) #2
и? непонятно что такое mpz_init()? или что? Для чего нужна MPIR? GMP не хватает? мало информации.
Coyote112358
0 / 0 / 0
Регистрация: 17.11.2009
Сообщений: 22
31.12.2011, 03:26  [ТС]     Одномерный массив в MPIR (длинная арифметика) #3
mpir потому что пишу в msvs
синтаксис и функционал gmp вроде те же

не понятно что вобще надо делать
как создать массив понятно
а записать в него эти числа не пойму - длиннее 10 цифр не принимает почему то

Добавлено через 40 минут
вот как я делаю
C++
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
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
#include "stdafx.h"
#include "iostream"
#include "mpirxx.h"
 
using namespace std;
 
int _tmain(int argc, _TCHAR* argv[])
{
    mpz_t Array[31];
    mpz_array_init(Array[0], 31, 1024);
 
    mpz_set_str(Array[0], "4", 10);
    mpz_set_str(Array[1], "32", 10);
    mpz_set_str(Array[2], "344", 10);
    mpz_set_str(Array[3], "4460", 10);
    mpz_set_str(Array[4], "66532", 10);
    mpz_set_str(Array[5], "1118398", 10);
    mpz_set_str(Array[6], "20984924", 10);
    mpz_set_str(Array[7], "437500380", 10);
    mpz_set_str(Array[8], "10105541204", 10);
    mpz_set_str(Array[9], "257860425672", 10);
    mpz_set_str(Array[10], "7241521734020", 10);
    mpz_set_str(Array[11], "222770819826574", 10);
    mpz_set_str(Array[12], "7466859257161488", 10);
    mpz_set_str(Array[13], "271156951835070930", 10);
    mpz_set_str(Array[14], "10609740515840572076", 10);
    mpz_set_str(Array[15], "444982726973034212924", 10);
    mpz_set_str(Array[16], "19911203110764903275188", 10);
    mpz_set_str(Array[17], "946564783226311159219150", 10);
    mpz_set_str(Array[18], "47631429404674467307773380", 10);
    mpz_set_str(Array[19], "2528751817754976349706118326", 10);
    mpz_set_str(Array[20], "141230550945276570635100088392", 10);
    mpz_set_str(Array[21], "8276355199785795726294608142184", 10);
    mpz_set_str(Array[22], "507729501918803287606319351173352", 10);
    mpz_set_str(Array[23], "32538850685220441627440374250456290", 10);
    mpz_set_str(Array[24], "2174335830863749936724371980412536172", 10);
    mpz_set_str(Array[25], "151236326399950056297298993112649900850", 10);
    mpz_set_str(Array[26], "10932105410468612099036188735215153271496", 10);
    mpz_set_str(Array[27], "820044457045734108109109406561277222219168", 10);
    mpz_set_str(Array[28], "63748873475180955339832071132429388775557556", 10);
    mpz_set_str(Array[29], "5129407130436863270233731521113990193730440354", 10);
    mpz_set_str(Array[30], "426694523629297006422022284190667711775649380560", 10);
 
 
    for (int i=0; i<31; i++)
    {
        cout << Array[i] << endl;
    }
    system("pause");
    return 0;
}
а можно ли как-нибудь скопировать числа из строкового массива в mpz в цикле ?

Добавлено через 2 минуты
и еще очень интересно — как переводить mpz из одной системы счисления в другую ?
alkagolik
 Аватар для alkagolik
1510 / 616 / 79
Регистрация: 15.07.2011
Сообщений: 3,552
31.12.2011, 13:41     Одномерный массив в MPIR (длинная арифметика) #4
Цитата Сообщение от Coyote112358 Посмотреть сообщение
mpir потому что пишу в msvs
убил
вот это чепуха.
Цитата Сообщение от Coyote112358 Посмотреть сообщение
C
1
2
3
for (int i = 0; i < 31; i ++ ) {
    cout << Array[i] << endl;
}
i\o в библиотеках реализованы как самостоятельные функции. Читайте документацию, там кстати и форматы вывода есть.
Цитата Сообщение от Coyote112358 Посмотреть сообщение
а можно ли как-нибудь скопировать числа из строкового массива в mpz в цикле ?
да,
C
1
2
3
4
char **strarray;
...
while ( i < size )
    mpz_set_str(Array[i], strarray[ i ] , ...);
Coyote112358
0 / 0 / 0
Регистрация: 17.11.2009
Сообщений: 22
31.12.2011, 15:39  [ТС]     Одномерный массив в MPIR (длинная арифметика) #5
а как мне эти числа переводить в другие системы счисления
Yandex
Объявления
31.12.2011, 15:39     Одномерный массив в MPIR (длинная арифметика)
Ответ Создать тему
Опции темы

Текущее время: 10:25. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru