DIM T(1000) PRINT PRINT "3つの数の最大公約数を求めます。" PRINT "3つの数をカンマで区切って入力してください。" PRINT INPUT PROMPT "3つの数? ":x,y,z PRINT CALL SORT3(x,y,z) PRINT "小さい順に並べる: ";x;y;z PRINT CALL Divisors(x,q,T) PRINT "最小の数の約数: "; FOR i=1 TO q PRINT T(i); NEXT i PRINT PRINT FOR i=q TO 1 STEP -1 IF INT(y/T(i))=y/T(i) AND INT(z/T(i))=z/T(i) THEN PRINT "最大公約数 =";T(i) PRINT PRINT "3つの数の比(小さい順)=";x/T(i);":";y/T(i);":";z/T(i) PRINT EXIT FOR END IF NEXT i END EXTERNAL SUB SORT3(a,b,c) IF a>b THEN LET T1=a LET a=b LET b=T1 END IF IF b>c THEN LET T2=b LET b=c LET c=T2 END IF IF a>b THEN LET T3=a LET a=b LET b=T3 END IF END SUB EXTERNAL SUB Divisors(N,C,D()) ! 山中和義/電脳遊戯団さんの 約数.BAS より LET C=1 LET D(1)=1 LET i=2 DO WHILE i*i<=N IF MOD(N,i)=0 THEN LET C=C+1 LET D(C)=i END IF LET i=i+1 LOOP LET M=C IF D(C)*D(C)=N THEN LET M=M-1 FOR i=1 TO M LET D(C+i)=N/D(M-i+1) NEXT i LET C=C+M END SUB