2013-04-10 5 views
-3

Как реализовать большой int в Matlab, если это возможно?Реализовать большой int в MATLAB

base = 115740200527109164239523414760926155534485715860090261532154107313946218459149402375178179458041461723723231563839316251515439564315555249353831328479173170684416728715378198172203100328308536292821245983596065287318698169565702979765910089654821728828592422299160041156491980943427556153020487552135890973413 

exp = 16205962307261760189575459786273943315321167650525279039226402620183364231925409315656258599329538647429058153827986967502066336581939528313657921572960065150727259976179025776971363924442875150959953467637629858540057691397256164559842414074042495886675668598268975047781126857869572720344318367729860654075 

mod = 1243253391468893845404940910854566300098568827418728061817312790184918208001194600223674037697950082500211917675834232214791856090660592263012501671640840412798375666268811197726759842581630629269540465454853684584044451666823800713702748106715019167893619562722261057233176795620

Это то, что мне нужно, чтобы вычислить modexp(base,exp,mod)

+1

Чрезвычайно ununderstandable – Maroun

+1

- шутки в сторону? Или ты просто троллинг? Если так, выходите сейчас. – 2013-04-10 20:36:27

ответ

5

это уже реализован, так как вы можете использовать vpi, как найти на обмене файлами.

base = vpi('115740200527109164239523414760926155534485715860090261532154107313946218459149402375178179458041461723723231563839316251515439564315555249353831328479173170684416728715378198172203100328308536292821245983596065287318698169565702979765910089654821728828592422299160041156491980943427556153020487552135890973413'); 

expon = vpi('16205962307261760189575459786273943315321167650525279039226402620183364231925409315656258599329538647429058153827986967502066336581939528313657921572960065150727259976179025776971363924442875150959953467637629858540057691397256164559842414074042495886675668598268975047781126857869572720344318367729860654075'); 

modulus = vpi('1243253391468893845404940910854566300098568827418728061817312790184918208001194600223674037697950082500211917675834232214791856090660592263012501671640840412798375666268811197726759842581630629269540465454853684584044451666823800713702748106715019167893619562722261057233176795620'); 

powermod(base,expon,modulus) 
ans = 
96688554274778609934477562662404606264395384510288145077254270650448790387722984014247388006652841434990300433933136603474993407330696644666217689882824803664362981750613122185159564556754728021340332299439811221240883496369370843657919287413245488923703097829207075814277190552896301852217610348268590146354                   

Или вы можете написать это самостоятельно. Это было не так сложно, просто занимая много времени.

Кстати, это ТЕЗИСНАЯ идея использовать имена переменных, такие как exp и mod. Научитесь не перегружать ценные функции в MATLAB с переменными с тем же именем.

+0

Вы автор функции 'vpi', если так я его видел. Удивительная функция. Я мог делать только +1 (хотел сделать больше :)) –

+0

Да, vpi - это мое. Thanx. – 2013-04-11 14:56:41

3

Помещение для дополнительной функциональности обычно Java API.

Например, вы можете использовать Java класс BigInteger в Matlab следующим образом:

baseValue = java.math.BigInteger('115740200527109164239523414760926155534485715860090261532154107313946218459149402375178179458041461723723231563839316251515439564315555249353831328479173170684416728715378198172203100328308536292821245983596065287318698169565702979765910089654821728828592422299160041156491980943427556153020487552135890973413') 
expValue = java.math.BigInteger('16205962307261760189575459786273943315321167650525279039226402620183364231925409315656258599329538647429058153827986967502066336581939528313657921572960065150727259976179025776971363924442875150959953467637629858540057691397256164559842414074042495886675668598268975047781126857869572720344318367729860654075') 
modValue = java.math.BigInteger('1243253391468893845404940910854566300098568827418728061817312790184918208001194600223674037697950082500211917675834232214791856090660592263012501671640840412798375666268811197726759842581630629269540465454853684584044451666823800713702748106715019167893619562722261057233176795620') 

result = baseValue.modPow(expValue, modValue) 

Возвраты: "Как реализовать большой Int в MATLAB, если не представляется возможным"

result = 
96688554274778609934477562662404606264395384510288145077254270650448790387722984014247388006652841434990300433933136603474993407330696644666217689882824803664362981750613122185159564556754728021340332299439811221240883496369370843657919287413245488923703097829207075814277190552896301852217610348268590146354 
Смежные вопросы