Forum » Programiranje » VB.NET evklidov algoritem razširjen
VB.NET evklidov algoritem razširjen
Yacked2 ::
Pozdravljeni, potreboval bi pomoč pri prevajanju te kode: Extended Euclidean algorithm @ Wikipedia v VB.net saj jo potrebujem za računanje javnega kjuca (RSA), obrazec je:
e^-1 = d mod O(n)
Hvala za pomoč
e^-1 = d mod O(n)
Hvala za pomoč
Korak naprej ni vedno ustrezen...sploh če si na robu prepada!
amacar ::
Kaj bi sploh rad naredil? Algoritem itak maš napisan na wikipedii, ostalo pa ne vem kaj še potrebuješ.
Yacked2 ::
Zanima me funkica, ki izračuna lasty v VB.net, ker nerazumem sledeče kode:
Se pravi v funkico vržem a in b, se pravi O(n) ter e nato funkcija najavi integere x,y,lastx ter lasty, nato najavi ter izračuna quotient kot integer = a /b (div verejtno pomeni deljenje)
Sedaj pa tele vrstice ne razumem:
A je to isto kot Dim a as integer = b in Dim b as integer = a mod b ?
Isto tukaj.
Nato je dovolj če vrnem samo lasty saj je to moj privatni kjuč ?
Nekaj sem čaral pa mi je vedno vn vrglo overflow error
function extended_gcd(a, b) x := 0 lastx := 1 y := 1 lasty := 0 while b ? 0 quotient := a div b (a, b) := (b, a mod b) (x, lastx) := (lastx - quotient*x, x) (y, lasty) := (lasty - quotient*y, y) return (lastx, lasty)
Se pravi v funkico vržem a in b, se pravi O(n) ter e nato funkcija najavi integere x,y,lastx ter lasty, nato najavi ter izračuna quotient kot integer = a /b (div verejtno pomeni deljenje)
Sedaj pa tele vrstice ne razumem:
(a, b) := (b, a mod b)
A je to isto kot Dim a as integer = b in Dim b as integer = a mod b ?
Isto tukaj.
(x, lastx) := (lastx - quotient*x, x) (y, lasty) := (lasty - quotient*y, y)
Nato je dovolj če vrnem samo lasty saj je to moj privatni kjuč ?
Nekaj sem čaral pa mi je vedno vn vrglo overflow error
Korak naprej ni vedno ustrezen...sploh če si na robu prepada!
Zgodovina sprememb…
- spremenil: Yacked2 ()
amacar ::
to (a, b) := (b, a mod b) lahko zapišemo kot: a=b b=a mod b Ampak pomoje moraš paziti, da ne prepišeš zadev, ker če je najprej a=b, bo potem izraz a mod b = b mod b in to ne bo ok, tako da si shrani v temp.
Spodnji izraz pa na enak način.
Zgodovina sprememb…
- spremenil: amacar ()
Yacked2 ::
Aha, to je bil probem, Hvala ja. Vem da za zamenjavo spremenljiv rabim uvesni novo spremenjivko, a se še nikoli prej nisem srečal z podobno kodo. Bom poiskusil če koda deluje. Še enkrat najlepša hvala !
Korak naprej ni vedno ustrezen...sploh če si na robu prepada!
Yacked2 ::
No sedaj sem sestavil kodo tako:
Pa se mi ustavi pri: -napaka overload
Dim p As Decimal = TextBox1.Text 'prvo prastevilo Dim q As Decimal = TextBox2.Text 'drugo prastevilo Dim n As Decimal = p * q 'izracunamo n Dim O As Decimal = (p - 1) * (q - 1) 'izracunamo O(n) Dim Javni As Decimal = TextBox4.Text 'vnesem javni kjuc 'zacetek racunanja Dim a As Decimal = (p - 1) * (q - 1) 'vnesem a=O Dim b As Decimal = Javni 'vnesem javni kjuc Dim x As Decimal = 0 Dim y As Decimal = 1 Dim lastx As Decimal = 1 Dim lasty As Decimal = 0 While b <> 0 Dim quotient As Decimal = a / b y = lasty - quotient * y End While TextBox3.Text = y TextBox5.Text = n.ToString 'izpisemo n
Pa se mi ustavi pri: -napaka overload
y = lasty - quotient * y
Korak naprej ni vedno ustrezen...sploh če si na robu prepada!
amacar ::
Algoritem z wikipedije dela...
Sub evklid() Dim x, y, lastx, lasty, temp, a, b, quotient As Integer x = 0 y = 1 lastx = 1 lasty = 0 a = 120 b = 23 While b <> 0 quotient = Int(a / b) temp = a a = b b = temp Mod b temp = x x = (lastx - quotient * x) lastx = temp temp = y y = (lasty - quotient * y) lasty = temp Wend MsgBox (lastx & " in " & lasty) End Sub
Vredno ogleda ...
Tema | Ogledi | Zadnje sporočilo | |
---|---|---|---|
Tema | Ogledi | Zadnje sporočilo | |
» | MYsql: Error: Incorrect decimal value: '' for column '' at row -1Oddelek: Programiranje | 623 (548) | Vazelin |
» | vb.net: dynamic textboxOddelek: Programiranje | 1172 (1062) | saule |
» | [c#] operator ^ in decimalOddelek: Programiranje | 1238 (1105) | technolog |
» | c# classOddelek: Programiranje | 2256 (1850) | japol |
» | visual basic 2008 express editionOddelek: Programiranje | 1802 (1229) | sel |