PRINT PRINT " 4以上の偶数は2つの素数の和で表すことができる。" PRINT PRINT "素数を小さい順に記述します:" PRINT " "; DIM H(2000),R(2000),K(2000),G(2000) LET e=0 FOR i=1 TO 300 IF PrimeQ(i)=1 THEN LET H(e+1)=i PRINT USING "######":i; LET e=e+1 IF INT(e/10)=e/10 THEN PRINT PRINT " "; END IF END IF NEXT i PRINT PRINT PRINT "検索結果:" LET z=0 FOR i=1 TO 50 FOR j=i TO 50 IF MOD(H(i)+H(j),2)=1 THEN GOTO 10 LET R(z+1)=H(i)+H(j) LET K(z+1)=H(i) LET G(z+1)=H(j) LET z=z+1 10 NEXT j NEXT i CALL sort(R,K,G,z) FOR i=1 TO z IF R(i)>400 THEN GOTO 20 PRINT " ";R(i);" = ";K(i);"+";G(i) 20 NEXT i PRINT PRINT LET y=10 PRINT " "; FOR i=1 TO z IF R(i)>400 THEN GOTO 30 IF R(i)=y THEN LET y=y+10 PRINT PRINT " "; END IF PRINT USING "#####":R(i); 30 NEXT i PRINT PRINT PRINT " 以上、少なくとも 400 までは、" PRINT "4以上の偶数は2つの素数の和で表すことができることがわかりました。" PRINT END EXTERNAL FUNCTION PrimeQ(n) ! 素数判定 1 : 素数、 0 : 素数でない LET PrimeQ=0 IF n<2 OR n<>INT(n) THEN EXIT FUNCTION IF MOD(n,2)=0 THEN IF n=2 THEN LET PrimeQ=1 ELSE LET k=3 DO WHILE k*k<=n ! 3〜√n の奇数のみで検証する IF MOD(n,k)=0 THEN EXIT FUNCTION LET k=k+2 LOOP LET PrimeQ=1 END IF END FUNCTION EXTERNAL SUB sort(a(),b(),c(),m) FOR i=1 TO m-1 FOR j=i+1 TO m IF a(i)>a(j) THEN LET t1=a(j) LET a(j)=a(i) LET a(i)=t1 LET t2=b(j) LET b(j)=b(i) LET b(i)=t2 LET t3=c(j) LET c(j)=c(i) LET c(i)=t3 END IF NEXT j NEXT i END SUB