OPTION ARITHMETIC RATIONAL !有理数モード PRINT PRINT "平方根の中をできるだけ小さな正の整数に直します" PRINT INPUT PROMPT "平方根の中の整数? ":x PRINT CALL SqNormalize(x,a,b) IF b=1 THEN PRINT " √";x;" = ";a ELSE PRINT " √";x;" = ";a;"* √";b END IF PRINT END EXTERNAL SUB SqNormalize(n,p,q) OPTION ARITHMETIC RATIONAL LET q=1 FOR p=INTSQR(ABS(n)) TO 1 STEP -1 !約数p^2の候補を大きい方から LET q=n/p^2 IF q=INT(q) THEN EXIT FOR NEXT p END SUB