PRINT PRINT "10 を いくつかの自然数の和で表したとき( 分解したとき )、" PRINT "それらの自然数をすべて掛け合わせたときに最大になるのは、" PRINT "どんな分解をしたときか?" PRINT DIM R(100),Y(10) LET N=10 LET Q=1 LET w=1 LET Y(2)=0 LET Y(3)=0 LET Y(4)=0 LET Y(5)=0 LET Y(6)=0 LET Y(7)=0 LET Y(8)=0 LET Y(9)=0 LET Y(10)=0 LET Z=1 FOR M=2 TO N-1 FOR a=N-1 TO 1 STEP -1 IF M=Q THEN LET R(w)=N PRINT N LET w=w+1 EXIT FOR END IF FOR b=a TO 1 STEP -1 IF M=Q+1 THEN LET X=a+b IF X=N THEN LET R(w)=a*b PRINT a;b IF R(w)>Z THEN LET Z=R(w) LET Y(1)=a LET Y(2)=b END IF LET w=w+1 END IF GOTO 90 END IF FOR c=b TO 1 STEP -1 IF M=Q+2 THEN LET X=a+b+c IF X=N THEN LET R(w)=a*b*c PRINT a;b;c IF R(w)>Z THEN LET Z=R(w) LET Y(1)=a LET Y(2)=b LET Y(3)=c END IF LET w=w+1 END IF GOTO 80 END IF FOR d=c TO 1 STEP -1 IF M=Q+3 THEN LET X=a+b+c+d IF X=N THEN LET R(w)=a*b*c*d PRINT a;b;c;d IF R(w)>Z THEN LET Z=R(w) LET Y(1)=a LET Y(2)=b LET Y(3)=c LET Y(4)=d END IF LET w=w+1 END IF GOTO 70 END IF FOR e=d TO 1 STEP -1 IF M=Q+4 THEN LET X=a+b+c+d+e IF X=N THEN LET R(w)=a*b*c*d*e PRINT a;b;c;d;e IF R(w)>Z THEN LET Z=R(w) LET Y(1)=a LET Y(2)=b LET Y(3)=c LET Y(4)=d LET Y(5)=e END IF LET w=w+1 END IF GOTO 60 END IF FOR f=e TO 1 STEP -1 IF M=Q+5 THEN LET X=a+b+c+d+e+f IF X=N THEN LET R(w)=a*b*c*d*e*f PRINT a;b;c;d;e;f IF R(w)>Z THEN LET Z=R(w) LET Y(1)=a LET Y(2)=b LET Y(3)=c LET Y(4)=d LET Y(5)=e LET Y(6)=f END IF LET w=w+1 END IF GOTO 50 END IF FOR g=f TO 1 STEP -1 IF M=Q+6 THEN LET X=a+b+c+d+e+f+g IF X=N THEN LET R(w)=a*b*c*d*e*f*g PRINT a;b;c;d;e;f;g IF R(w)>Z THEN LET Z=R(w) LET Y(1)=a LET Y(2)=b LET Y(3)=c LET Y(4)=d LET Y(5)=e LET Y(6)=f LET Y(7)=g END IF LET w=w+1 END IF GOTO 40 END IF FOR h=g TO 1 STEP -1 IF M=Q+7 THEN LET X=a+b+c+d+e+f+g+h IF X=N THEN LET R(w)=a*b*c*d*e*f*g*h PRINT a;b;c;d;e;f;g;h IF R(w)>Z THEN LET Z=R(w) LET Y(1)=a LET Y(2)=b LET Y(3)=c LET Y(4)=d LET Y(5)=e LET Y(6)=f LET Y(7)=g LET Y(8)=h END IF LET w=w+1 END IF GOTO 30 END IF FOR i=h TO 1 STEP -1 IF M=Q+8 THEN LET X=a+b+c+d+e+f+g+h+i IF X=N THEN LET R(w)=a*b*c*d*e*f*g*h*i PRINT a;b;c;d;e;f;g;h;i IF R(w)>Z THEN LET Z=R(w) LET Y(1)=a LET Y(2)=b LET Y(3)=c LET Y(4)=d LET Y(5)=e LET Y(6)=f LET Y(7)=g LET Y(8)=h LET Y(9)=i END IF LET w=w+1 END IF GOTO 20 END IF FOR j=i TO 1 STEP -1 LET X=a+b+c+d+e+f+g+h+i+j IF X=N THEN LET R(w)=a*b*c*d*e*f*g*h*i*j PRINT a;b;c;d;e;f;g;h;i;j IF R(w)>Z THEN LET Z=R(w) LET Y(1)=a LET Y(2)=b LET Y(3)=c LET Y(4)=d LET Y(5)=e LET Y(6)=f LET Y(7)=g LET Y(8)=h LET Y(9)=i LET Y(10)=j END IF LET w=w+1 END IF GOTO 10 FOR k=j TO 1 STEP -1 LET R(w)=a*b*c*d*e*f*g*h*i*j*k PRINT a;b;c;d;e;f;g;h;i;j;k LET w=w+1 NEXT k 10 NEXT j 20 NEXT i 30 NEXT h 40 NEXT g 50 NEXT f 60 NEXT e 70 NEXT d 80 NEXT c 90 NEXT b 100 NEXT a NEXT M PRINT PRINT "答えは、10を次のように分解したときで" PRINT " "; FOR i=1 TO N IF Y(i)=0 THEN EXIT FOR PRINT Y(i);" "; NEXT i PRINT PRINT PRINT "これらを掛け合わせると";Z;"になります。" PRINT END