Partition an integer x into n primes: Difference between revisions

m
→‎{{header|Phix}}: is_prime() now builtin
(Rename Perl 6 -> Raku, alphabetize, minor clean-up)
m (→‎{{header|Phix}}: is_prime() now builtin)
Line 1,181:
 
=={{header|Phix}}==
Using is_prime(), primes[] and add_block() from [[Extensible_prime_generator#Phix]].
<lang Phix>function partition(integer v, n, idx=0)
if n=1 then
Line 1,189 ⟶ 1,188:
while 1 do
idx += 1
whileinteger lengthnp = get_prime(primes)<idx do)
add_block()
end while
integer np = primes[idx]
if np>=floor(v/2) then exit end if
res = partition(v-np, n-1, idx)
Line 1,215 ⟶ 1,211:
object res = partition(v,n)
res = iff(res=0?"not possible":sprint(res))
printf(1,"PartitionedPartition %d into %d primes: %s\n",{v,n,res})
end for</lang>
{{out}}
<pre>
PartitionedPartition 99809 into 1 primes: {99809}
PartitionedPartition 18 into 2 primes: {5,13}
PartitionedPartition 19 into 3 primes: {3,5,11}
PartitionedPartition 20 into 4 primes: not possible
PartitionedPartition 2017 into 24 primes: {2,3,5,7,11,13,17,19,23,29,31,37,41,43,47,53,59,61,67,71,73,79,97,1129}
PartitionedPartition 22699 into 1 primes: {22699}
PartitionedPartition 22699 into 2 primes: {2,22697}
PartitionedPartition 22699 into 3 primes: {3,5,22691}
PartitionedPartition 22699 into 4 primes: {2,3,43,22651}
PartitionedPartition 40355 into 3 primes: {3,139,40213}
</pre>
 
7,804

edits