_max = 1000000000 _size = _max/16 + 16 uint8 primes(_size) local fn twins( max as uint64 ) CFTimeInterval t : t = fn CACurrentMediaTime uint64 num, p, twins = 0, prev = 0 for num = 3 to max step 2 if primes(num >> 4) & bit((num & 15) >> 1) then continue p = num * num while p < max primes(p >> 4) |= bit((p & 15) >> 1) p += num << 1 wend twins += (num == prev + 2) prev = num next printf @"%10d twin primes in first %d integers %.3f ms."¬ , twins, max, 1000 * (fn CACurrentMediaTime - t) end fn window 1, @"Twin Primes" print CFTimeInterval tm : tm = fn CACurrentMediaTime for byte x = 1 to 9 fn memset( @primes(0), 0, _size ) //Clear array for each run fn twins( 10^x ) next printf @" Total time: %.3f sec.",(fn CACurrentMediaTime - tm) handleevents