33 lines
984 B
Text
33 lines
984 B
Text
10 DIM P%(13000),PR(30),I%(50),N(50),NP%(50),CP(50): MP=99809!
|
|
20 FOR P=2 TO SQR(MP)
|
|
30 PRINT CHR$(13);"Sieving... ";P;
|
|
40 FOR C=P*P TO MP STEP P
|
|
50 B=FIX(C/8): V=C-B*8
|
|
60 P%(B) = P%(B) OR 2^V
|
|
70 NEXT C,P
|
|
80 PRINT CHR$(13);"Sieving done "
|
|
90 READ N,NP%
|
|
100 IF N=0 THEN END
|
|
110 PRINT:PRINT "Partitioning";N;"with";NP%;"primes:"
|
|
120 S=1: N(0)=N: NP%(0)=NP%: I%(0)=1: CP(0)=1
|
|
130 IF S=0 THEN PRINT CHR$(13);"Impossible":GOTO 90
|
|
140 S=S-1: N=N(S): NP%=NP%(S): I%=I%(S): CP=CP(S)
|
|
150 CP=CP+1
|
|
160 B=FIX(CP/8):V=CP-B*8
|
|
170 IF P%(B) AND 2^V GOTO 150
|
|
175 PRINT CHR$(13);"@";CP;
|
|
180 IF N<CP GOTO 130
|
|
190 IF NP%=1 THEN 240
|
|
200 PR(I%)=CP
|
|
210 CP(S)=CP
|
|
220 N(S+1)=N-CP: NP%(S+1)=NP%-1: CP(S+1)=CP: I%(S+1)=I%+1: S=S+2
|
|
230 GOTO 130
|
|
240 B=FIX(N/8):V=N-B*8
|
|
250 IF P%(B) AND 2^V GOTO 130
|
|
260 PR(I%)=N
|
|
270 PRINT CHR$(13);PR(1);
|
|
280 FOR J%=2 TO I%: PRINT "+";PR(J%);: NEXT J%
|
|
290 PRINT
|
|
300 GOTO 90
|
|
310 DATA 99809,1, 18,2, 19,3, 20,4, 2017,24
|
|
320 DATA 22699,1, 22699,2, 22688,3, 22699,4, 40355,3, 0,0
|