OPTION ARITHMETIC decimal_HIGH PRINT PRINT " 一の位の数、百の位の数、万の位の数、・・・・ はそのまま。" PRINT " 十の位の数、千の位の数、10万の位の数、・・・・ は2倍して、" PRINT "その数が1桁ならばそのまま、2桁ならば一の位の数と十の位の数を加え。" PRINT " そして、それらの数たちをすべて加えます。" PRINT INPUT PROMPT "16桁くらいの数を入力してください。":N PRINT PRINT " @ ⇒ "; LET P=INT(LOG10(N)) ! N は P+1 桁の数 LET X=10^P LET XX=X LET NN=N FOR i=1 TO P+1 PRINT USING "###":INT(NN/XX); LET NN=NN-INT(NN/XX)*XX LET XX=XX/10 NEXT i PRINT PRINT " A ⇒ "; LET XX=X LET NN=N FOR i=1 TO P+1 IF MOD(P+1-i,2)=0 THEN PRINT USING "###":INT(NN/XX); ELSE PRINT USING "###":2*INT(NN/XX); END IF LET NN=NN-INT(NN/XX)*XX LET XX=XX/10 NEXT i PRINT PRINT " B ⇒ "; LET XX=X LET NN=N FOR i=1 TO P+1 IF MOD(P+1-i,2)=0 THEN PRINT USING "###":INT(NN/XX); ELSE IF 2*INT(NN/XX)<10 THEN PRINT USING "###":2*INT(NN/XX); ELSE PRINT USING "###":MOD(2*INT(NN/XX),10)+1; END IF END IF LET NN=NN-INT(NN/XX)*XX LET XX=XX/10 NEXT i PRINT PRINT LET XX=X LET NN=N LET C=O FOR i=1 TO P+1 IF MOD(P+1-i,2)=0 THEN LET C=C+INT(NN/XX) ELSE IF 2*INT(NN/XX)<10 THEN LET C=C+2*INT(NN/XX) ELSE LET C=C+MOD(2*INT(NN/XX),10)+1 END IF END IF LET NN=NN-INT(NN/XX)*XX LET XX=XX/10 NEXT i PRINT " Bの数の総和 = ";C PRINT IF MOD(C,10)=0 THEN PRINT " 上記の数の一の位の数が0ですので、" PRINT "あなたの入力した数は、クレジットカード番号である可能性があります。" ELSE PRINT " 上記の数の一の位の数が0ではありませんので、" PRINT "あなたの入力した数は、クレジットカード番号ではありません。" END IF PRINT END