|
次の数列を表示するプログラムをつくりなさい。
(1) 1,2,4,8,16,( ),26,38,62,74,・・・
(2) 1,2,4,6,16,12,64,24,36,48,( ),・・・
(3) 1,3,4,7,6,12,8,15,13,( ),・・・
(4) 66,72,53,34,25,29,85,( ),・・・
(5) 0,1,10,2,100,11,1000,3,20,( ),・・・
(6) 14,91,62,53,64,96,48,11,( ),・・・
答え
!(1) 1,2,4,8,16,( ),26,38,62,74,・・・
!mとmの各桁の積との和、すなわちm=16なら、次は16+1×6=22
LET M=1
FOR N=1 TO 10
PRINT M;
LET T=M
LET S=1 !各桁の積
DO WHILE T>0
LET S=S*MOD(T,10)
LET T=INT(T/10)
LOOP
LET M=M+S
NEXT N
PRINT
!(2) 1,2,4,6,16,12,64,24,36,48,( ),・・・
!mの約数の個数がn個になる最小のもの
!n=3のとき、4=1,2,4
!n=5のとき、16=1,2,4,8,16
FOR N=1 TO 11
LET M=0
DO
LET M=M+1
LET K=0 !約数の個数
FOR D=1 TO M
IF MOD(M,D)=0 THEN LET K=K+1
NEXT D
LOOP UNTIL K=N
PRINT M;
NEXT N
PRINT
!(3) 1,3,4,7,6,12,8,15,13,( ),・・・
!nの約数の和、すなわちn=6なら約数は1,2,3,6なので、1+2+3+6=12
FOR N=1 TO 10
LET S=0 !約数の和
FOR D=1 TO N
IF MOD(N,D)=0 THEN LET S=S+D
NEXT D
PRINT S;
NEXT N
PRINT
!(4) 66,72,53,34,25,29,85,( ),・・・
!数字の並びがx[k]=ab…cなら、x[k+1]=a^2+b^2+ … +c^2
LET X=66
FOR K=1 TO 8
PRINT X;
LET T=X !次へ
LET S=0
DO WHILE T>0
LET S=S+MOD(T,10)^2
LET T=INT(T/10)
LOOP
LET X=S
NEXT K
PRINT
!(5) 0,1,10,2,100,11,1000,3,20,( ),・・・
!nを素因数分解する。n=(2^a)(3^b)…(p^c)のとき、指数をc…baと並べる。
!n=3=(2^0)(3^1)のとき、10
!n=5=(2^0)(3^0)(5^1)のとき、100
!n=6=(2^1)(3^1)のとき、11
!n=8=2^3のとき、3
DATA 15
DATA 2,3,5,7,11,13,17,19,23,29,31,37,41,43,47 !素数列
READ M
DIM P(M)
MAT READ P
LET D$="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ" !数字
FOR N=1 TO 10
LET S$=""
FOR i=1 TO M !因数分解
LET A=0
LET T=N
DO WHILE MOD(T,P(i))=0
LET A=A+1
LET T=T/P(i)
LOOP
LET S$=D$(A+1:A+1) & S$
IF P(i)>N THEN EXIT FOR
NEXT i
IF LEN(S$)>1 THEN !0サプレス
DO WHILE S$(1:1)="0"
LET S$=S$(2:LEN(S$))
LOOP
END IF
PRINT " ";S$;
NEXT N
PRINT
!(6) 14,91,62,53,64,96,48,11,( ),・・・
!n^2すなわち1,4,9,16,25,…を1491625…と並べて、2つずつ並べていく。
LET S$=""
FOR N=1 TO 11
LET S$=S$ & STR$(N^2)
IF LEN(S$)>1 THEN !次へ
LET L=LEN(S$)
PRINT S$(1:2);" ";
LET S$=S$(3:L)
END IF
NEXT N
PRINT
END
|
|