(phixonline)-->
with javascript_semantics
sequence duffinian = {false}
integer n = 2, count = 0, triplet = 0, triple_count = 0
while triple_count<50 do
bool bDuff = not is_prime(n) and gcd(n,sum(factors(n,1)))=1
duffinian &= bDuff
if bDuff then
count += 1
if count=50 then
sequence s50 = apply(true,sprintf,{{"%3d"},find_all(true,duffinian)})
printf(1,"First 50 Duffinian numbers:\n%s\n",join_by(s50,1,25," "))
end if
triplet += 1
triple_count += (triplet>=3)
else
triplet = 0
end if
n += 1
end while
sequence s = apply(true,sq_add,{match_all({true,true,true},duffinian),{{0,1,2}}}),
p = apply(true,pad_tail,{apply(true,sprintf,{{"[%d,%d,%d]"},s}),24})
printf(1,"First 50 Duffinian triplets:\n%s\n",{join_by(p,1,4," ")})