FUNCTION RND141(q) ! 14桁までの整数をランダムに出す。重複あり。 LET X=INT(RND*10^14) LET RND141=X END FUNCTION FUNCTION RND142(q) ! 14桁までの整数をランダムに出す。重複あり。 LET X=INT(RND*10^14) LET RND142=X END FUNCTION FUNCTION GCD(s,t) ! 最大公約数を求める関数 DO LET m=MOD(s,t) IF m=0 THEN EXIT DO LET s=t LET t=m LOOP LET GCD=t END FUNCTION RANDOMIZE PRINT PRINT "任意の自然数のペアの最大公約数が1である割合は?" PRINT "(14桁までの自然数で5000回シミュレーションします。)" PRINT PRINT "例:" DIM D(5000) LET U=0 FOR i=1 TO 5000 LET BB=RND141(i) IF BB=0 THEN LET BB=10^14 LET CC=RND142(i) IF CC=0 THEN LET CC=9*10^14 LET D(i)=GCD(BB,CC) IF i<11 THEN PRINT " ";BB;" と ";CC;" の 最大公約数は ";D(i);"です。" END IF IF D(i)=1 THEN LET U=U+1 END IF NEXT i PRINT PRINT "5000回施行したうち ";ROUND(100*U/5000,2);"% は任意に選んだ2つの数は素でした。" PRINT END ################################################################################ FUNCTION RND2(q) ! 0〜9の整数をランダムに出す。重複あり。 LET X=INT(RND*10) LET RND2=X END FUNCTION FUNCTION RND3(q) ! 0〜9の整数をランダムに出す。重複あり。 LET X=INT(RND*10) LET RND3=X END FUNCTION FUNCTION GCD(s,t) ! 最大公約数を求める関数 DO LET m=MOD(s,t) IF m=0 THEN EXIT DO LET s=t LET t=m LOOP LET GCD=t END FUNCTION RANDOMIZE PRINT PRINT "任意の自然数のペアの最大公約数が1である割合は?" PRINT INPUT PROMPT "およそ何桁の数?(14桁以下)" :n PRINT PRINT "例:" DIM B(14),C(14),D(5000) LET U=0 FOR Z=1 TO 5000 IF n=1 THEN LET BB=RND2(i)+1 LET CC=RND3(i)+1 ELSE LET BB=0 FOR i=1 TO n LET B(i)=RND2(i) LET BB=BB+B(i)*10^(i-1) IF BB=0 THEN LET BB=10^(n-1) NEXT i LET CC=0 FOR i=1 TO n LET C(i)=RND3(i) LET CC=CC+C(i)*10^(i-1) IF CC=0 THEN LET CC=9*10^(n-1) NEXT i END IF LET D(Z)=GCD(BB,CC) IF Z<11 THEN PRINT " ";BB;" と ";CC;" の 最大公約数は ";D(Z);"です。" END IF IF D(Z)=1 THEN LET U=U+1 END IF NEXT Z PRINT PRINT "5000回施行したうち ";ROUND(100*U/5000,2);"% は2つの数は互いに素でした。" PRINT END