!3の倍数と3の付く数を表示する
LET N=100 !出力範囲
FOR i=1 TO N IF MOD(i,3)=0 OR POS(STR$(i),"3")>0 THEN PRINT i NEXT i
!ショートコードとしては、上記のようになる。 !プログラミングの練習に、「3の倍数」と「3の付く数」の判定方法を検討してみる。
!●進数表記
FOR i=1 TO N IF MOD(i,3)=0 THEN !3進数表記の数の最下位が0なら PRINT i ELSE !重複表示を避ける LET a=i DO WHILE a>0 !最下位から各桁を確認する ※10進法→10進法変換 IF MOD(a,10)=3 THEN !3が付くなら PRINT i EXIT DO END IF LET a=INT(a/10) !次の桁へ LOOP END IF NEXT i
!●3の倍数の判定 - 3で割り切れる、3の倍数
!その1 FUNCTION GCD(a,b) !最大公約数 IF b=0 THEN LET GCD=a ELSE LET GCD=GCD(b, MOD(a,b)) END FUNCTION
FOR i=1 TO N IF GCD(i,3)=3 OR POS(STR$(i),"3")>0 THEN PRINT i !3で割り切れる NEXT i
!その2 DEF LCM(a,b)=a*b/GCD(a,b) !最小公倍数
FOR i=1 TO N IF i=LCM(i,3) OR POS(STR$(i),"3")>0 THEN PRINT i !3の倍数 NEXT i
!その3 FOR i=1 TO N IF i=INT(i/3)*3 OR POS(STR$(i),"3")>0 THEN PRINT i !3の倍数 NEXT i
!その4 FOR i=1 TO N LET s=0 LET flg=0 LET a=i DO WHILE a>0 !各桁を確認する LET k=MOD(a,10) LET s=s+k !各桁の数の和 IF k=3 THEN LET flg=1 !3が付くなら LET a=INT(a/10) !次の桁へ LOOP IF MOD(s,3)=0 OR flg=1 THEN PRINT i !和が3の倍数は、3の倍数 NEXT i
END
|