OPTION ARITHMETIC decimal_HIGH DECLARE FUNCTION KAIJO PRINT PRINT "ウィルソンの定理:" PRINT "   Pが素数 ⇔ P−1 の階乗 をPで割ると P−1 余る。" PRINT INPUT PROMPT "100以下の自然数? " :N PRINT FOR i=2 TO N IF SOSU(i)=1 THEN PRINT " 素数: ";i;"  それよりも1少ない数の階乗をその素数で割った余り = ";MOD(KAIJO(i-1),i) END IF NEXT i PRINT END EXTERNAL FUNCTION SOSU(x) OPTION ARITHMETIC decimal_HIGH IF x=1 THEN LET SOSU=-1 ELSEIF x=2 THEN LET SOSU=1 ELSE LET SOSU=1 FOR i=2 TO x-1 IF MOD(x,i)=0 THEN LET SOSU=-1 EXIT FOR END IF NEXT i END IF END FUNCTION EXTERNAL FUNCTION KAIJO(x) OPTION ARITHMETIC decimal_HIGH LET C = 1 IF x = 1 THEN LET KAIJO = 1 FOR i=2 TO x LET C = C * i NEXT i LET KAIJO = C END FUNCTION