新しく発言する  EXIT  インデックスへ

世界のナベアツにBASICで挑戦!おもろ〜


  世界のナベアツにBASICで挑戦! おもろ〜 山中和義 2008/10/06 22:02:23  (修正1回)
世界のナベアツにBASICで挑戦! おもろ〜  返事を書く  ノートメニュー
山中和義 <drdlxujciw> 2008/10/06 22:02:23 ** この記事は1回修正されてます
!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
  個数を計算する式があるみたいです。 山中和義 2008/10/07 14:22:03 

 インデックスへ  EXIT
新規発言を反映させるにはブラウザの更新ボタンを押してください。