Algoritmo di Euclide: differenze tra le versioni
Contenuto cancellato Contenuto aggiunto
Euclide e i suoi predecessori conoscevano sì il concetto di zero, detto ouden, nulla. Etichette: Modifica da mobile Modifica da web per mobile |
→Codici: Riscritti i codici per maggiore consistenza e aderenza alle guide stilistiche, e aggiunta indicazione sulla tipologia dell'algoritmo (iterativo o ricorsivo) |
||
Riga 39:
==Codici==
{{C|Controllare se i codici vanno mantenuti o trasferiti ad un altro progetto|informatica|giugno 2015}}
[[C (linguaggio di programmazione)|C]] e [[C++]] (algoritmo iterativo)
<syntaxhighlight lang="c">
/* Algoritmo iterativo */
int euclide(int a, int b)
{
int r; // resto della divisione
while(b != 0) //
{
r = a % b; // in r salva il resto della divisione tra a e b
a = b; // scambia il ruolo di a e b
b = r; //
}
return a; //... e quando b è (o è diventato) 0, il risultato è in a
}
</syntaxhighlight>
[[C (linguaggio)|C]] e [[C++]] (algoritmo ricorsivo)
<syntaxhighlight lang="c" line="1"> /* Algoritmo ricorsivo */
int
if(
return(
else
return
}
</syntaxhighlight>
[[Scala (linguaggio di programmazione)|Scala]] (algoritmo ricorsivo)
<syntaxhighlight lang="scala" line="1"> @tailrec
def
if (
else
</syntaxhighlight>
[[MATLAB]] (algoritmo iterativo)
<syntaxhighlight lang="matlab" line="1">
function out =
if(b == 0)
out = a;
elseif(b == 1)
out = 1;
else
out =
end
Riga 89 ⟶ 90:
</syntaxhighlight>
[[Python]] (algoritmo iterativo)
<syntaxhighlight lang="python">
def
while b:
a, b = b, a % b
Riga 98:
</syntaxhighlight>
[[Ruby (linguaggio di programmazione)|Ruby]] (algoritmo iterativo)
<syntaxhighlight lang="ruby">
def euclide(a, b)
while
a, b = b, a % b
end
end
</syntaxhighlight>
[[Pascal (linguaggio di programmazione)|Pascal]] (algoritmo iterativo)
<syntaxhighlight lang="Pascal">
function
r: integer; begin
MCD := a
begin
a:=b;▼
end;
</syntaxhighlight>
[[BASIC]] (vb.net, algoritmo iterativo)
<syntaxhighlight lang="vbnet">
While (r <> 0)
▲ Function Euclide_MCD(ByVal a As Int16, ByVal b As Int16) As Int16
Wend
Return b
▲ Dim r As Int16 = a Mod b
▲ While (r <> 0)
▲ a = b
▲ b = r
▲ r = a Mod b
▲ End While
▲ Return b
▲ End Function
</syntaxhighlight>
In questo algoritmo è stato usato per la rappresentazione numerica il tipo "int16", ma può essere cambiato a piacimento con qualsiasi altro tipo di variabile numerica secondo i bisogni del programma.
[[PHP]] (algoritmo iterativo)
<syntaxhighlight lang="PHP">
function euclide($a, $b) {
▲ }
}
</syntaxhighlight>
[[Java (linguaggio di programmazione)|Java]] (algoritmo iterativo)
<syntaxhighlight lang="java" line="1">
}
▲ }
</syntaxhighlight>
[[Rust (linguaggio di programmazione)|Rust]]<ref>{{Cita web|url=https://github.com/ProgrammingRust|titolo=Programming Rust|sito=GitHub|lingua=en|accesso=2023-01-06}}</ref> (algoritmo iterativo)
<syntaxhighlight lang="rust" line="1">
fn
assert! (a != 0 && b != 0);
while b != 0 {
Riga 186 ⟶ 183:
</syntaxhighlight>
[[Go (linguaggio di programmazione)|Go]] (algoritmo iterativo)
<syntaxhighlight lang="Go">
func
for b != 0 {
a, b = b, a%b
}
return a
}
==Note==
|