lmem[1]:=gmem[cpuid] ; záložní kopie globální paměti { Rozkopírování hodnoty gmem[0], procesory si ji uloží do lmem[0] } lmem[0]:=lmem[0]+1 ; zvýšíme o jedna lmem[2]:=cpuid-1 lmem[2]:=lmem[2]%lmem[0] lmem[2]:=lmem[2] ; hodnota od 0 do n lmem[3]:=cpuid-1 lmem[3]:=lmem[3]/lmem[0] ; hodnota od 0 do n ; všech (n+1)^2 možných dvojic hodnot přiřazeno lmem[4]:=cpuid-lmem[0] if lmem[4]>=0 then gmem[lmem[4]]:=lmem[1] if lmem[3]=0 then lmem[1]:=lmem[1]+gmem[lmem[2]] ; přičteme druhou cifru lmem[4]:=cpuid-lmem[0] if lmem[4]=0 then lmem[1]:=0 ; přenos $c_n$ je nula if lmem[3]=0 then gmem[lmem[2]]:=lmem[1] { Rozkopírování hodnot v buňkách gmem[0] až gmem[n] tak, že procesor bude znát gmem[lmem[2]] } if lmem[3]>lmem[2] then halt; ; tyto procesory nejsou již třeba { Procesory se stejným lmem[3] budou pracovat na určení prvního nejedničkového členu posloupnosti gmem[lmem[3]],...,gmem[n]; zda je nula nebo dva se uloží do gmem[lmem[3]] } if lmem[3]>0 then halt; ; už ani tyto procesory nebudou třeba ; Pozn.: nyní platí lmem[2]=cpuid-1 lmem[4]:=gmem[lmem[2]] ; máme spočítány přenosy gmem[cpuid]:=lmem[1] lmem[1]:=gmem[lmem[2]] ; to je součet odpovídajících dvou cifer if lmem[2]=0 then lmem[1]:=0 ; pozor na začátek, tam je součet cifer nula lmem[4]:=lmem[4]/2 ; přenos (2/2=1, 0/2=0) lmem[1]:=lmem[1]+lmem[4] ; přičteme přenos k součtu cifer gmem[lmem[2]]:=lmem[4]%2 ; zapíšeme výsledek halt