RosettaCodeData/Task/Yellowstone-sequence/FutureBasic/yellowstone-sequence.basic

34 lines
963 B
Plaintext

include "NSLog.incl"
NSInteger local fn GCD( a as NSInteger, b as NSInteger )
if ( a == 0 ) then return b
return fn GCD( b % a, a )
end fn = 0
void local fn CalcYellowstoneSequence( terms as int )
CFMutableArrayRef sequence = fn MutableArrayWithObjects( @1, @2, @3, NULL )
for int n = 3 to terms - 1
NSInteger prev1 = fn NumberIntegerValue( fn ArrayObjectAtIndex( sequence, n - 1 ) )
NSInteger prev2 = fn NumberIntegerValue( fn ArrayObjectAtIndex( sequence, n - 2 ) )
NSInteger candidate = 1
while (YES)
if ( !fn ArrayContainsObject( sequence, @(candidate) ) && fn GCD( candidate, prev1 ) == 1 && fn GCD( candidate, prev2 ) > 1 )
MutableArrayAddObject( sequence, @(candidate) )
break
end if
candidate++
wend
next
NSLog( @"Yellowstone sequence up to %d terms:", terms )
for CFNumberRef num in sequence
NSLog( @"%@ \b", num )
next
end fn
fn CalcYellowstoneSequence( 30 )
HandleEvents