1、求100以内最大的自然数N,使得从1开始的连续N个自然数的倒数之和小于3.5。SET TALK OFF
CLEAR
S=0
FOR N=1 TO 100
S=(S+1)/N 改正:S=S+1/N
IF S>=3.5
LOOP 改正:EXIT
ENDIF
ENDFOR
? N-1
SET TALK ON
RETURN
"运行结果:18"
2、求100以内最小的自然数N,使得从1开始的连续N个自然数的倒数之和大于3.6。SET TALK OFF
CLEAR
S=0
FOR N=1 TO 100
S=S+1/N
IF S<=3.6 改正:IF S>3.6
LOOP 改正:EXIT
ENDIF
ENDFOR
? N
SET TALK ON
RETURN
"运行结果:21"
3、求50以内最大的自然数N,使得从102开始的连续N个偶数之和小于3000。SET TALK OFF
CLEAR
S=0
FOR N=1 TO 50
A=100+2*N
S=S*A 改正:S=S+A
IF S>=3000
LOOP 改正:EXIT
ENDIF
ENDFOR
? N-1
SET TALK ON
RETURN
"运行结果:23"
4、求50以内最小的自然数N,使得从102开始的连续N个偶数之和大于2000。SET TALK OFF
CLEAR
S=0
FOR N=1 TO 50
A=102+2*N 改正:A=100+2*N
S=S+A
IF S>2000
LOOP 改正:EXIT
ENDIF
ENDFOR
? N
SET TALK ON
RETURN
"运行结果:17"
5、求出100以内使得算式1*2+2*3+…+N*(N+1)的值小于5000的最大的自然数N。SET TALK OFF
CLEAR
S=0
FOR N=1 TO 100
A=N*(N+1)
S=S+A
IF S<5000 改正:IF S>5000
EXIT
ENDIF
ENDFOR
? N 改正:? N-1
SET TALK ON
RETURN
"运行结果:23"
6、求出100以内使得算式1*2+2*3+…+N*(N+1)的值大于6000的最小的自然数N。SET TALK OFF
CLEAR
S=0
FOR N=1 TO 100
A=N*(N+1)
S=S+A
IF S<=6000 改正:IF S>6000
LOOP 改正:EXIT
ENDIF
ENDFOR
? N
SET TALK ON
RETURN
"运行结果:26"
7、求出100以内使得算式1+(1+2)+…+(1+2+…+N)的值小于1000的最大的自然数N。SET TALK OFF
CLEAR
S=0
T=0
FOR N=1 TO 100
S=S+N
T=T+S
IF T<1000 改正:IF T>1000
EXIT
ENDIF
ENDFOR
? N 改正:? N-1
SET TALK ON
RETURN
"运行结果:17"
8、求出100以内最大的奇数N使得算式(1-1/2)+(1/3-1/4)+…+(1/N-1/(N+1))的值小于0.68。
SET TALK OFF
CLEAR
S=0
FOR N=1 TO 100 STEP 2
A=1/N-1/(N+1)
S=S+A
IF S<0.68 改正:IF S>0.68
EXIT
ENDIF
ENDFOR
? N-2
SET TALK ON
RETURN
"运行结果:35"
9、某国在2000年时人口总数为1亿,若以每年3%的速度递增,试求出至少要到哪一年该国人口总数才会翻一翻。
SET TALK OFF
CLEAR
S=1
FOR N=2001 TO 2100
S=S*1.03
IF S=2 改正:IF S>=2
LOOP 改正:EXIT
ENDIF
ENDFOR
? N
SET TALK ON
RETURN
"运行结果:2024"
9、设等比数列:1,2,4,8,…。求使得此数列的前N项之和大于100000的最小的自然数N。
SET TALK OFF
CLEAR
A=1
S=1 改正:S=0
FOR N=1 TO 100
S=S+A
IF S>100000
EXIT
ENDIF
A=2+A 改正:A=A*2
ENDFOR
? N
SET TALK ON
RETURN
"运行结果:17"
10、设等比数列:1,2,4,8,…。求使得此数列的前N项之和小于2345678的最大的自然数N。
SET TALK OFF
CLEAR
A=1
S=0
FOR N=1 TO 100
S=S+A
IF S>=2345678
EXIT
ENDIF
A=2+A 改正:A=A*2
ENDFOR
? N 改正:? N-1
SET TALK ON
RETURN
"运行结果:21"
11、求出45678的所有非平凡因子(即除1和它本身以外的约数)中是奇数的因子个数。 SET TALK OFF
CLEAR
A=45678
N=0
FOR B=3 TO A STEP 2
IF MOD(B,A)=0 改正:IF MOD(A,B)=0
N=N+1
ENDIF
ENDFOR
? B 改正:? N
SET TALK ON
RETURN
"运行结果:7"
12、求出20677和42067的最大公约数。
SET TALK OFF
CLEAR
A=20677
B=42067
FOR D=1 TO A
IF MOD(A,D)=0 AND MOD(B,D)=0
ENDIF
ENDFOR
? D 改正:MAX
SET TALK ON
RETURN
"运行结果:713"
13、求前[1,100]内能被6或8整除的所有自然数的平方根的和(将第1位小数四舍五入,结果只保留整数)。
SET TALK OFF
CLEAR
S=0
FOR N=1 TO 100
IF MOD(N,6)=0 AND MOD(N,8)=0 改正:IF MOD(N,6)=0 OR MOD(N,8)=0 S=SQRT(S+N) 改正:S= S+SQRT(N)
ENDIF
ENDFOR
? ROUND(S,0)
SET TALK ON
RETURN
"运行结果:162"
14、求所有符合算式AB*BA=2701的最小的两位数AB(即A*10+B)。其中A、B是1~9之间的一位整数。
SET TALK OFF
CLEAR
FOR X=11 TO 99
A=X/10 改正:A=INT(X/10)
B=MOD(X,10)
IF X*Y=2701
EXIT
ENDIF
ENDFOR
? X
SET TALK ON
RETURN
"运行结果:37"
15、已知数列:1,2,4,7,11,16,…,其规律是相邻两项之差依次是1,2,3,4,5,…。试求出此数列中大于5000的最小的项。
SET TALK OFF
CLEAR
A=1
FOR N=0 TO 1000
A=A+N
IF A>5000
LOOP 改正:EXIT
ENDIF
ENDFOR
? N 改正:? A
SET TALK ON
RETURN
"运行结果:5051"
16、已知数列:1,2,4,7,11,16,…,其规律是相邻两项之差依次是1,2,3,4,5,…。试求出此数列中小于6000的最大的项。
SET TALK OFF
CLEAR
A=0 改正:A=1
FOR N=0 TO 1000
IF A+N<6000 改正:IF A+N>6000
EXIT
ENDIF
A=A+N
ENDFOR
? A
SET TALK ON
RETURN
"运行结果:5996"
17、已知数列{F(N)}:F(1)=1,F(2)=4,当N=3,4,5,…时,F(N)=3*F(N-1)-F(N-2)。试求出100以内最小的自然数N使得此数列的第N项大于87654321。
SET TALK OFF
CLEAR
DIMENSION F(100)
F(1)=1
F(2)=4
FOR N=3 TO 100
F(N)=3*F(N-1)-F(N-2)
IF F(N)<=87654321 改正:IF F(N)>87654321
LOOP 改正:EXIT
ENDIF
ENDFOR
? N
SET TALK ON
RETURN
"运行结果:20"
18、求出100以内最大的自然数N,使得从1开始的连续N个自然数的立方之和小于999999。 SET TALK OFF
CLEAR
S=0
FOR N=1 TO 100
A=N*N*N
S=S+A
IF S<999999 改正:IF S<999999
EXIT
ENDIF
ENDFOR
? N 改正:? N-1
SET TALK ON
RETURN
运行结果:44
19、一球从 100米高处落至平地,并且连续多次再反弹再落下,假设每次反弹的高度都是前一高度的3/4倍,试求出最小的自然数N,使得此球从开始下落至第N次着地时在垂直方向所经过的总路程超过678米。
SET TALK OFF
CLEAR
H=100
S=0 改正:S=100
FOR N=2 TO 100
H=H*3/4
S=S+H 改正:S=S+2*H
IF S>678
EXIT
ENDIF
ENDFOR
? N
SET TALK ON
RETURN
运行结果:13
20、设有用26个字母表示的26个表达式:A=1,B=1/(A+1),C=1/(B+2),…,Z=1/(Y+25)。试求出这26个字母中其值小于0.1的字母个数。
SET TALK OFF
CLEAR
LETT=1
N=0
FOR K=1 TO 26 改正:FOR K=1 TO 25
LETT=1/LETT+K 改正:LETT=1/(LETT+K)
IF LETT<0.1
N=N+1
ENDIF
ENDFOR
? N
SET TALK ON
RETURN
运行结果:16
21、求所有符合算式AB*BA=3627的最大的两位数AB(即A*10+B)。其中A、B是1~9之间的一位整数。
SET TALK OFF
CLEAR
FOR X=11 TO 99
A=INT(X/10)
B=MOD(X,10)
Y=A*10+B 改正:Y=A+10*B
IF X*Y=3627
EXIT
ENDIF
ENDFOR
? X 改正:? Y
SET TALK ON
RETURN
“运行结果:93"
22、设一个数列的前3项都是1,从第4项开始,每一项都是其前3项之和。试求出此数列的前25项中大于54321的项数。
SET TALK OFF
CLEAR
STORE 1 TO F1,F2,F3
N=0
FOR K=1 TO 25 改正:FOR K=4 TO 25 或 FOR K=1 TO 22
F=F1+F2+F3
IF F>54321
N=N+1
ENDIF
F1=F2
F2=F3
F3=F1 改正:F3=F
ENDFOR
? N
SET TALK ON
RETURN
“运行结果:5"
23、已知一个由分数组成的数列:1/2,3/5,8/13,21/34,…,其特点是:从其中第2个分数起,每个分数的分子都是前一分数的分子分母之和而其分母都是其分子与前一分数的分母之和。试求出此数列的前25项中其值大于0.618的项数。
SET TALK OFF
CLEAR
F1=1
F2=2
N=0
FOR K=1 TO 25
F=F1/F2
IF F>0.618
N=N+1
ENDIF
F1=F2 改正:F1=F1+F2
F2=F1 改正:F2=F1+F2
ENDFOR
? N
SET TALK ON
RETURN
"运行结果:20"
24、回文指的是正读和反读都一样的一串字符,如121、1221。试求出[1421,4112]内所有回文数的和。
SET TALK OFF
CLEAR
S=0
FOR X=1421 TO 4112
A=X/1000 改正:A=INT(X/1000)
B=INT((X-A*1000)/100)
C=INT((X-A*1000-B*100)/10)
D=X-A*1000-B*100-C*10
IF A=D AND B=C
S=S*X 改正:S=S+X
ENDIF
ENDFOR
? S
SET TALK ON
RETURN
"运行结果:74250"
25、求出[1234,6789]内中间两位数字之和等于首尾两位数字之积的数的个数。SET TALK OFF
CLEAR
N=0
FOR X=1234 TO 6789
A=INT(X/1000)
B=INT(X-A*1000)/100 改正:B=INT((X-A*1000)/100)
C=INT(X-A*1000-B*100)/10 改正:C=INT((X-A*1000-B*100)/10)
D=X-A*1000-B*100-C*10
IF B+C=A*D
N=N+1
ENDIF
ENDFOR
? N
SET TALK ON
RETURN
"运行结果:175"
26、将大于1000且能被4和6中至少一个数整除的所有整数按从小到大顺序排列后,求前面20个数之和。
SET TALK OFF
CLEAR
S=0
K=0
X=1000
DO WHILE K<=20 改正:DO WHILE K<20
X=X+1
IF MOD(X,4*6)=0 改正:IF MOD(X,4)=0 OR MOD(X,6)=0
S=S+X
K=K+1
ENDIF
ENDDO
? S
SET TALK ON
RETURN
"运行结果:20610"
27、若一个自然数恰好等于某个整数的平方,则称此数为完全平方数。如144是完全平方数,因为它等于12的平方。求[1000,9999]内所有完全平方数的和。
SET TALK OFF
CLEAR
S=0
FOR X=1000 TO 3000
Y=SQRT(X) 改正: Y=INT(SQRT(X)) 或改下一语句为 IF X=INT(Y)*INT(Y) IF X=Y*Y
ENDIF
ENDFOR
? X 改正:? S
SET TALK ON
RETURN
"运行结果:43539"
28、若一个自然数恰好是它的平方的末后几位数,则称此数为自同构数。如5和76都是自同构数,因为它们的平方分别是25和5776。求[2,99999]内所有自同构数之和。(提示:若X是M位同构数,则X的平方除以10的M次方的余数就是X)
SET TALK OFF
CLEAR
S=0
FOR X=2 TO 99999
Y=X*X
M=LEN(LTRIM(STR(X))) &&设X是M位数
IF MOD(Y,10*M)=X 改正:IF MOD(Y,10**M)=X
S=S+X
ENDIF
ENDFOR
? Y 改正:? S
SET TALK ON
RETURN
运行结果:101114
29、求满足条件A*B=54321且使A+B的值最小的自然数对A、B中较大的一个数。(提示:设A<=B,当A越大时A+B越小)
SET TALK OFF
CLEAR
K=INT(SQRT(C))
FOR A=1 TO K
B=INT(C)/A 改正:B=INT(C/A)
IF A*B=C
MAX=A 改正:MAX=B
ENDIF
ENDFOR
? MAX
SET TALK ON
RETURN
"运行结果:953"
30、设A=123,B=541,求A/B的精确值中小数点后40位数字中数字1的个数。(提示:基于人工计算的思想)
SET TALK OFF
CLEAR
A=123
B=541
N=0
FOR K=1 TO 40
A=A+0 改正:A=A*10
Q=INT(A)/B 改正:Q=INT(A/B)
IF Q=1
N=N+1
ENDIF
A=MOD(A,B)
ENDFOR
? N
SET TALK ON RETURN
"运行结果:3"