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 | 660 (585) | Vazelin |
» | vb.net: dynamic textboxOddelek: Programiranje | 1226 (1116) | saule |
» | [c#] operator ^ in decimalOddelek: Programiranje | 1290 (1157) | technolog |
» | c# classOddelek: Programiranje | 2325 (1919) | japol |
» | visual basic 2008 express editionOddelek: Programiranje | 1883 (1310) | sel |