Coprime triplets: Difference between revisions
Content added Content deleted
(Realize in F#) |
MaiconSoft (talk | contribs) (Added Delphi example) |
||
Line 130: | Line 130: | ||
{{output}} |
{{output}} |
||
<lang applescript>{1, 2, 3, 5, 4, 7, 9, 8, 11, 13, 6, 17, 19, 10, 21, 23, 16, 15, 29, 14, 25, 27, 22, 31, 35, 12, 37, 41, 18, 43, 47, 20, 33, 49, 26, 45}</lang> |
<lang applescript>{1, 2, 3, 5, 4, 7, 9, 8, 11, 13, 6, 17, 19, 10, 21, 23, 16, 15, 29, 14, 25, 27, 22, 31, 35, 12, 37, 41, 18, 43, 47, 20, 33, 49, 26, 45}</lang> |
||
=={{header|Delphi}}== |
|||
{{libheader| System.SysUtils}} |
|||
{{Trans|Julia}} |
|||
<lang Delphi> |
|||
program Coprime_triplets; |
|||
{$APPTYPE CONSOLE} |
|||
uses |
|||
System.SysUtils; |
|||
//https://rosettacode.org/wiki/Greatest_common_divisor#Pascal_.2F_Delphi_.2F_Free_Pascal |
|||
function Gcd(u, v: longint): longint; |
|||
begin |
|||
if v = 0 then |
|||
EXIT(u); |
|||
result := Gcd(v, u mod v); |
|||
end; |
|||
function IsIn(value: Integer; a: TArray<Integer>): boolean; |
|||
begin |
|||
for var e in a do |
|||
if e = value then |
|||
exit(true); |
|||
Result := false; |
|||
end; |
|||
function CoprimeTriplets(less_than: Integer = 50): TArray<Integer>; |
|||
var |
|||
cpt: TArray<Integer>; |
|||
_end: Integer; |
|||
begin |
|||
cpt := [1, 2]; |
|||
_end := high(cpt); |
|||
while True do |
|||
begin |
|||
var m := 1; |
|||
while IsIn(m, cpt) or (gcd(m, cpt[_end]) <> 1) or (gcd(m, cpt[_end - 1]) <> 1) do |
|||
inc(m); |
|||
if m >= less_than then |
|||
exit(cpt); |
|||
SetLength(cpt, Length(cpt) + 1); |
|||
_end := high(cpt); |
|||
cpt[_end] := m; |
|||
end; |
|||
end; |
|||
begin |
|||
var trps := CoprimeTriplets(); |
|||
writeln('Found ', length(trps), ' coprime triplets less than 50:'); |
|||
for var i := 0 to High(trps) do |
|||
begin |
|||
write(trps[i]: 2, ' '); |
|||
if (i + 1) mod 10 = 0 then |
|||
writeln; |
|||
end; |
|||
{$IFNDEF UNIX} Readln; {$ENDIF} |
|||
end.</lang> |
|||
=={{header|F_Sharp|F#}}== |
=={{header|F_Sharp|F#}}== |