Numbers with prime digits whose sum is 13: Difference between revisions

already break when equal
(J)
(already break when equal)
Line 1,352:
 
=={{header|OCaml}}==
<syntaxhighlight lang="ocaml">let seq_prime_digits_13prime_digits_13 =
let digits = [2; 3; 5; 7] in
let rec loopnext ds cs ns ()= =function
| [] -> if ns = [] then Seq.Nil[] else loopnext digits [] (List.rev ns) [] ()
match cs with
| (n, r) :: cs' as cs ->
| [] -> if ns = [] then Seq.Nil else loop digits (List.rev ns) [] ()
| (n, r) :: cs' ->
match ds with
| d :: ds' when d < r -> loopnext ds' cs ((n * 10 + d, r - d) :: ns) ()cs
| d :: ds' when d = r -> Seq.Cons (n * 10 + d, loop:: ds'next csdigits ns) cs'
| _ -> loopnext digits ns cs' ns ()
in loopnext digits [] [0, 13] []
 
let () =
SeqList.itermap (Printfstring_of_int prime_digits_13 |> String.printfconcat " %u") seq_prime_digits_13 |> print_newlineprint_endline</syntaxhighlight>
{{out}}
<pre> 337 355 373 535 553 733 2227 2272 2335 2353 2533 2722 3235 3253 3325 3352 3523 3532 5233 5323 5332 7222 22225 22252 22333 22522 23233 23323 23332 25222 32233 32323 32332 33223 33232 33322 52222 222223 222232 222322 223222 232222 322222</pre>
 
=={{header|Pascal}}==
Line 1,937 ⟶ 1,936:
r, n = src.pop(0)
for d in 2, 3, 5, 7:
if d >= r:
dst.append(nif *d 10== + d)r:
src dst.append((r - d, n * 10 + d))
break
ifsrc.append((r - d, ==n r:* 10 + d))
dst.append(n * 10 + d)
else:
src.append((r - d, n * 10 + d))
print(*dst)</syntaxhighlight>
{{out}}
Line 2,115 ⟶ 2,113:
set src [lassign $src n r]
foreach d {2 3 5 7} {
if {$d >= $r} break{
if {$d == $r} {lappend res "$n$d"}
lappend res "$n$d"break
} else {
lappend src "$n$d" [expr {$r - $d}]
}
lappend src "$n$d" [expr {$r - $d}]
}
}
Line 2,134 ⟶ 2,131:
for d in 2 3 5 7
do
[ $d -gtge $2 ] && break{
if [ $d -eq $2 ] && res=$res${res:+ }$1$d
then break
res=$res${res:+ }$1$d
elseset -- "$@" $1$d $(($2 - d))
set -- "$@" $1$d $(($2 - d))
fi
done
shift 2
559

edits