RosettaCodeData/Task/Pythagorean-triples/FutureBasic/pythagorean-triples.basic
2026-04-30 12:34:36 -04:00

37 lines
961 B
Text

include "NSLog.incl"
begin globals
long total = 0
long prim = 0
long maxPeri = 0
end globals
void local fn newTri( s0 as long, s1 as long, s2 as long )
long p = s0 + s1 + s2
if ( p <= maxPeri )
prim++
total += maxPeri / p
fn newTri( s0 - 2 * s1 + 2 * s2, 2 * s0 - s1 + 2 * s2, 2 * s0 - 2 * s1 + 3 * s2 )
fn newTri( s0 + 2 * s1 + 2 * s2, 2 * s0 + s1 + 2 * s2, 2 * s0 + 2 * s1 + 3 * s2 )
fn newTri( -s0 + 2 * s1 + 2 * s2, -2 * s0 + s1 + 2 * s2, -2 * s0 + 2 * s1 + 3 * s2 )
end if
end fn
void local fn DoIt
int i = 2
maxPeri = 100
while ( maxPeri <= 10000000000 )
prim = 0
total = 0
fn newTri( 3, 4, 5 )
NSLog( @"M^%2d %12ld %12ld %-11ld", i, maxPeri, total, prim ) : i++
maxPeri *= 10
wend
end fn
NSLog( @"below triples primitive" )
CFTimeInterval t : t = fn CACurrentMediaTime
fn DoIt
NsLog( @"\nCompute time: %.3f ms", (fn CACurrentMediaTime-t)*1000 )
HandleEvents