程序改错和填空题选
SET TALK OFF CLEA N=0 K=0
FOR I=100 TO 1000 F=1
FOR J=2 TO I 改正:FOR J=2 TO I-1 IF MOD(I,J)=0 F=0 EXIT ENDIF ENDFOR IF F=1 N=I
K=K+I 改正:K=K+1 IF K=10 EXIT ENDIF ENDIF ENDFOR ? N RETURN
运行结果:149
43、对自然数A、B、C,若A
FOR A=1 TO C
B=INT(SQRT(C*2-A*2)) 改正:B=INT(SQRT(C**2-A**2)) IF A*A+B*B=C*C AND A
IF MAX>A+B+C 改正:IF MAX
SET TALK ON RETURN
\运行结果:6000\
44、设某四位数的各位数字的立方和等于168,问满足这种条件的四位数且是奇数的数共有多少个? SET TALK OFF CLEA N=0
FOR X=1000 TO 9999 A=INT(X/1000)
B=INT((X-A*1000)/100)
C=INT(X/100) 改正:C=INT(X-A*1000-B*100)/10) D=MOD(X,10)
IF A*3+B*3+C*3=168 AND D=3 改正:IF A**3+B**3+C**3=168 AND MOD(X,2)=1 N=N+1 ENDIF ENDFOR ? N
SET TALK ON RETURN
\运行结果:6\
45、把一张一元钞票,换成一分、二分和五分硬币,每种至少1枚,问有多少种方案? SET TALK OFF CLEA
11
程序改错和填空题选
N=0
FOR YI=1 TO 100 FOR ER=1 TO 20 FOR WU=1 TO 20
IF YI+ER+WU=100 改正:IF YI+2*ER+5*WU=100 N=N+YI 改正:N=N+1 ENDIF ENDFOR ENDFOR ENDFOR ? N
SET TALK ON RETURN
\运行结果:461\
46、找满足以下条件: X^2+Y^2=41^2 且X+Y之值最大的二个正整数X,Y, 求X+Y之值. SET TALK OFF CLEA
MAX=1000 改正:MAX=0 FOR X=0 TO 41 FOR Y=0 TO 41 IF X*X+Y*Y=41*41
IF MAX>X+Y 改正:IF MAX SET TALK ON RETURN \运行结果:49\ 47、已知24有8个正整数因子(即:1,2,3,4,6,8,12,24),而24正好被其因子个数8整除。求[100,300]之间能被其因子数目整除的数的个数。 SET TALK OFF CLEA C=0 FOR N=100 TO 300 S=0 FOR I=1 TO N -1 改正:FOR I=1 TO N IF INT(I/10)=0 改正:IF INT(I/10)=I/10 或改为 IF MOD(I,10)=0 S=S+1 ENDIF ENDFOR IF MOD(N,S)=0 C=C+1 ENDIF ENDFOR ? C SET TALK ON RETURN \运行结果:19\ 48、分子分母为正整数,分子小于分母的分数称为真分数。对于分数的分子分母取值范围为 [50,90] 且分母能被3整除的真分数共有多少个. SET TALK OFF CLEA N=1 改正:N=0 FOR A=50 TO 90 FOR B=50 TO 90 IF MOD(B,3)=0 改正:IF MOD(B,3)=0 AND A 12 程序改错和填空题选 ENDFOR ENDFOR ? N SET TALK ON RETURN \运行结果:287\ 49、分子分母为正整数,分子小于分母的分数称为真分数。对于分数的分子分母取值范围为 [50,90] 且分母能被3整除、分子能被5整除的真分数共有多少个. SET TALK OFF CLEA N=1 改正:N=0 FOR A=50 TO 89 FOR B=50 TO 90 IF MOD(B,3)=0 改正:IF MOD(B,3)=0 AND MOD(A,5)=0 AND A SET TALK ON RETURN63 \运行结果:63\ 50、求S=1-1/2+1/3-1/4+.....的前100项之和(精确到小数点后4位) SET TALK OFF CLEA S=1.0000 F=1 FOR I=1 TO 100 改正:FOR I=2 TO 100 S=S-F/I F=F 改正:F=-F ENDFOR ? S RETURN \运行结果:0.6882\ 51、梅森尼数是指能使2^N-1为素数的数N,求[1,21]范围内最大的梅森尼数? SET TALK OFF CLEA MAX=0 S=1 FOR X=2 TO 21 S=S*2 改正:S=2**X-1 FLAG=1 FOR I=2 TO INT(SQRT(S-1)) 改正:FOR I=2 TO INT(SQRT(S)) IF MOD(S,I)=0 FLAG=0 EXIT ENDIF ENDFOR IF FLAG=0 改正:IF FLAG=1 MAX=X ENDIF ENDFOR ? MAX RETURN \运行结果:19\ 52、求出559399和539251的最大公约数。(注:在数学上,常用(A,B)表示A和B的最大公约数。且有结论:若有等式A=B*Q+R,则(A,B)=(B,R)。例如,因为62=20*3+2且20=2*10+0,所以(62,20)=(20,2)=(2,0)=2 ) SET TALK OFF CLEAR A=559399 B=539251 13 程序改错和填空题选 DO WHILE B>0 R=INT(A/B) 改正:R=MOD(A,B) B=R 改正:A=B A=B 改正:B=R ENDDO ? A SET TALK ON RETURN \运行结果:73\ 53、利用分解质因数的方法求出18000中含有质因数的个数(相同的重复计数,例如,180中含有5个质因数:2、2、3、3、5)。 SET TALK OFF CLEAR X=18000 N=0 K=1 改正:K=2 DO WHILE X>1 IF MOD(X,K)=0 N=N+1 X=INT(X/K) EXIT 改正:LOOP ENDIF K=K+1 ENDDO ? N SET TALK ON RETURN \运行结果:3\ 54、分子分母为正整数,分子小于分母且分子分母无公因数的分数称为最简真分数。对于分数的分母取值范围为 [50,90] 时的最简真分数共有多少个. SET TALK OFF CLEA N=0 FOR A=2 TO 89 &&分子 FOR B=50 TO 90 &&分母 IF A>B 改正:IF A GYZ=1 &&公因子 FOR X=2 TO A IF MOD(A,X)=0 改正:IF MOD(A,X)=0 AND MOD(B,X)=0 GYZ=X EXIT ENDIF ENDFOR IF GYZ=1 N=N+1 ENDIF ENDIF ENDFOR ENDFOR ? N SET TALK ON RETURN \运行结果:1685\ 55、若一个四位正整数是另一个正整数的平方,且各位数字的和是一个平方数,则称该四位正整数是\四位双平方数\。例如: 由于7396=86^2,且7+3+9+6=25=5^2,则称7396是\四位双平方数\。求所有\四位双平方数\中最小的一个\四位双平方数\。 SET TALK OFF CLEA MIN=10000 FOR I=1000 TO 9999 A=INT(I/1000) 14 程序改错和填空题选 B=INT((I-A*1000)/100) C=MOD(I,100) 改正:C=INT((I-A*1000-B*100)/10) D=MOD(I,10) X=A+B+C+D IF SQRT(I))*INT(SQRT(I)=I 改正:IF SQRT(I))*INT(SQRT(I)=I AND SQRT(X))*INT(SQRT(X)=X IF MIN>I MIN=I ENDIF ENDIF ENDFOR ? MIN SET TALK ON RETURN 运行结果:1521 56、50个小学生按1至50序号顺时针围成一圈,做出局游戏,老师站在圈外顺时针从第一个人数起,每数到5时,这人从圈里出来,继续数1,2,3,4,5,数到第5个学生时,他就出局,已出局的位置不再参加计数,直至所有的学生出局为止,问最后一个出局的学生序号是多少号。 SET TALK OFF CLEA DIME A(50) FOR I=1 TO 50 A(I)=0 改正: A(I)=I ENDFOR K=0 FOR I=1 TO 50 P=1 &&每趟报数 DO WHILE P<=5 K=K+1 IF K>50 K=0 改正: K=1 ENDIF IF A[K]<>0 P=P+1 ENDIF ENDDO A[K]=0 ENDFOR ? K SET TALK OFF RETURN \运行结果:19\ 57、水仙花数是指这样的数,其各位数字的立方和等于该数本身,如:153=1^3+5^3+3^3。编写程序,计算从100年开始到2000年为止,共有多少个年号是水仙花数年号。 SET TALK OFF CLEA N=1 FOR I=100 TO 2000 A=INT(I/1000) B=INT((I-A*1000)/100) C=MOD(I,100) 改正:C=INT((I-A*1000-B*100)/10) D=MOD(I,10) IF A*A+B*B+C*C=I 改正: IF A*A*A+B*B*B+C*C*C=I N=N+1 ENDIF ENDFOR ? N RETURN \运行结果:4\ 58、一个自然数是素数,且它的数字位置经过任意对换后仍为素数,则称为绝对素数。如13,试求所有两位绝对素数的和。 SET TALK OFF 15