当前位置:文档之家› 程序改错题

程序改错题

程序改正错误题
1.求出[10,1000]内所有能被7和9中至少一个数整除的整数的个数.
set talk off
clear
n=0
for x=10 to 1000
if mod(x,7)=0 and mod(x,9)=0 àand改or
n=n+x àn=n+1
endif
endfor
? n
set talk on
return 236

2.求出[10,1000]内所有能同时被7和9整除的整数之和。
set talk off
clear
s=0
for x=10 to 1000
if mod(x,7)=0 and mod(x,9)=0
s=x às=s+x
endif
endfor
? x à?s
set talk on
return 7560
3.求出[10,1000]内所有能被6整除但不能被9整除的整数之和。
set talk off
clear
s=0
for x=10 to 1000
if mod(x,6)=0 or mod(x,9)=0 àor mod(x,9)=0改 and mod(x,9)<>0
x=s+x às=s+x
endif
endfor
? s
return 55440

4.求出[10,1000]内所有能被6和9中的一个且只有一个数整除的整数的个数。
n=0
for x=10 to 1000
if mod(x,6)=0 and mod(x,9)!=0 and mod(x,6)!=0 and mod(x,9)=0 àor
n=x àn=n+1
endif
endfor
? n
return 165
5.求出[100,800]内所有既不能被5整除也不能被7的整数的个数。
n=0
for x=100 to 800
if mod(x,5)=0 and mod(x,7)<>0 àif mod(x,5)<>0 and mod(x,7)<>0
n=x+1 àn=n+1
endif
endfor
? x à?n
return 480

6.求出[101,299]内所有能被2整除但不能同时被3和5整除的整数之和。
set talk off
s=0
for x=101 to 299
if mod(x,2)=0 and not mod(x,3)=0 and mod(x,5)=0 à( )
x=s+x às=s+x
endif
endfor
? s
return 18630
7.求出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
return 18
8.求出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
9.求出100以内最大的自然数n,使得从1开始的连续n个自然数的平方和小于5000。
s=0
for n=1 to 100
s=s+n*2 às=s+n^2
if s>=5000
exit
endif
endfor
? n à? n-1
return 24
10.求出100以内最小的自然数n,使得从1开始的连续n个自然数的平方之和大于5500。
set talk off
s=0
for n=1 to 100
s=s+n*n
if s<=5500 às>=5500
exit
endif
endfor
? s à? n
return 25

11.求出100以内最大的自然数n,使得从1开始的连续n个自然数的立方和小于20000。
s=0
for n=1 to 100
s=s+n*3 às=s+n^3
if s>=20000
exit
endif
endfor
? n à? n-1
return 16
12.求出100以内最小的自然数n,使得从1开始的连续n个自然数的立方之和大于30000。
s=0
for n=1 to 100
s=s+n*n*3 às=s+n^3
if s>30000
loop àexit
endif
endfor
?

n
return 19
13.求出50以内最大的自然数n,使得从102开始的连续n个偶数之和小于3000。(23)
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
return 23
14.求出50以内最小的自然数n,使得从102开始的连续n个偶数之和大于2000。
s=0
for n=1 to 50
a=100+2*n
s=s+a
if s>2000
loop àexit
endif
endfor
? n
return 17
15.求出50以内最大的自然数n,使得从101开始的连续n个奇数之和小于2000。(17)
set talk off
clear
s=0
for n=1 to 50
a=99+2*n
s=s+a
if s<2000 àif s>2000
exit
endif
endfor
? n à? n-1
return 17

16.求出50以内最小的自然数n,使得从101开始的连续n个奇数之和大于3000。(25)
set talk off
clear
s=0
for n=1 to 50
a=101+2*n àa=99+2*n
s=s+a
if s>3000
exit
endif
endfor
? s à? n
set talk on
return 25
17.求出100以内使得算式1*2+2*3+…+n*(n+1)的值小于5000的最大的自然数n。(23)
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
18.求出100以内使得算式1*2+2*3+…+n*(n+1)的值大于6000的最小的自然数n。(26)
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
19.求出100以内使得算式1*3+2*5+…+n*(2*n+1)的值小于10000的最大的自然数n。(23)
set talk off
clear
s=0
for n=1 to 100
a=n*2*(n+1) àa=n*(2*n+1)
s=s+a
if s>=10000
loop àexit
endif
endfor
? n-1
set talk on
return 23

20.求出100以内使得算式1+(1+2)+…+(1+2+…+n)的值小于1000的最大的自然数n。
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
retuen 17

21.求出100以内使得算式1+(1+2)+…+(1+2+…+n)的值大于1500的最小的自然数n。(20)
t=0
s=0
for n=1 to 100
s=t+n às=s+n
t=s+n àt=t+s
if t>1500
exit
endif
endfor
? n
return 20
22.求出100以内使得算式1/(1*2)+1/(2*3)+…+1/(n*(n+1))的值小于0.952的最大的自然数n。
s=0
for n=1 to 100
s=s+1/n*(n+1) às=s+1/(n*(n+1))
if s<0.952 àif s>0.952
exit
endif
endfor
? n-1
return 19
23.求出100以内使得算式1/(1*1)+1/(2*3)+…+1/(n*(2n-1)的值大于1.35的最小的自然数n。
s=0
for n=1 to 100
a=n*(2*n-1)
s=s+a às=s+1/a
if s>1.35
loop àexit
endif
endfor
? n
return 14
24.求出100以内的最大的自然数n,使得算式1+1/(1+2)+…+1/(1+2+…+n)的值小于1.9。
s=0
t=0
for n=1 to 100
s=s+1/n às=s+n
t=t+s àt=t+1/s
if t>=1.9


exit
endif
endfor
? n-1
return 18
25.求出100以内使得算式1+1/(1*2)+…+1/(1*2*…*n)的值大于1.71828的最小的自然数n。
set talk off
clear
a=1.00000000
s=0.00000000
for n=1 to 100
a=a/n àa=a*n
s=s+a às=s+1/a
if s<=1.71828 àif s>=1.71828
loop àexit
endif
endfor
? n
return 9

26.求出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
27.求出100以内使算式(1-1/2)+(1/3-1/4)+…+(1/n-1/(n+1))的值大于0.682的最小的奇数n。
set talk off
clear
s=0
for n=1 to 100 àfor n=1 to 100 step 2
a=1/n-1/(n+1)
s=s+a
if s<=0.682 àif s>=0.682
exit
endif
endfor
? n
set talk on
return 45
28.某国在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

29.某国今年的人口总数为1亿,若以每年4%的速度递增,试求出至少要再过几年该国人口总数才会翻一翻。
set talk off
clear
s=0 às=1
for n=1 to 100
s=s*1.04
if s>=2
loop àexit
endif
endfor
? n
set talk on
return 18
30.设等比数列: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=2*a
endfor
? n
return 17

31.设等比数列:1,2,4,8,…求使得此数列的前n项之和小于150000的最大的自然数n。
clear
a=1
s=0
for n=1 to 100
s=s+a
if s>=150000
exit
endif
a=2+a àa=2*a
endfor
? n à?n-1
return 17
32.设等比数列:1,3,9,27,…。求使得此数列的前n项之和大于2345678的最小的自然数n。
a=1
s=0
for n=1 to 100
s=s*a às=s+a
if s>2345678
exit
endif
a=3+a àa=3*a
endfo
? n
return 14


33.设等比数列:1,3,9,27,…。求使得此数列的前n项之和小于3456789的最大的自然数n。
a=1
s=0
for n=1 to 100
s=s*a às=s+a
if s<3456789 àif s>3456789
exit
endif
a=3*a
endfor
? n-1
return 14
34.求出45678的所有非平凡因子(即除1和它本身以外的约数)中奇数的个数。
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
return 7
35.求出203267的所有真因子(即小于它本身的约数)中最大的。
a=203267
for b=1 to a àfor b=1 to a-1
if mod(a,b)=0
max=a àmax=b
endif
endfor
? max

return 6557

36.求出20677和42067的最大公约数。
a=20677
b=42067
for d=1 to a àfor d=1 to mod(b,a)-1
if mod(a,d)=0 and mod(b,d)=0
max=b àmax=d
endif
endfor
? d
return 713
37.求出559399的所有非平凡因子(即除1和它本身以外的约数)中最小的。
a=559399
for n=2 to a
if mod(a,n)=0
loop àexit
endif
endfor
? a à? n
set talk on
return 73





38.求前[1,100]内能被6或8整除的所有自然数的平方根的和(将第1位小数四舍五入,结果只保留整数)。
s=0
for n=1 to 100
if mod(n,6)=0 and mod(n,8)=0 àand改or
s=sqrt(s+n) às=s+sqrt(n)
endif
endfor
? round(s,0)
return 162
39.求出9269和8671的最小公倍数。[ 算法提示:a与b的最小公倍数是a的倍数中第1个被b整除的数 ]
a=9269
b=8671
for k=a to a*b step a
if mod(k,b)<>0 àif mod(k,b)=0
loop àexit
endif
endfor
? k
return 268801
40.求所有符合算式ab*ba=2701的最小的两位数ab(即a*10+b)。其中a、b是1~9之间的一位整数。
for x=11 to 99
a=x/10 àa=int(x/10)
b=mod(x,10)
y=10*a+b
if x*y=2701 àif (b*10+a)*y=2701
exit
endif
endfor
? x
return 37

41.已知数列:1,2,4,7,11,16,…,其规律是相邻两项之差依次是1,2,3,4,5,…。试求出此数列中大于5000的最小的项。
a=1
for n=0 to 1000
a=a+n
if a>5000
loop àexit
endif
endfor
? n à?a
return 5051
42.已知数列:1,2,4,7,11,16,…,其规律是相邻两项之差依次是1,2,3,4,5,…。试求出此数列中小于6000的最大的项。
a=0 àa=1
for n=0 to 1000
if a+n<6000 àif a+n>6000
exit
endif
a=a+n
endfor
? a
return 5996

43.已知数列:1,2,4,7,11,16,…,其规律是相邻两项之差依次是1,2,3,4,5,…。求100以内最小的自然数n使得此数列的前n项之和大于800。
a=0 àa=1
s=0
for n=1 to 100
a=a+n
s=s+a
* ? n,a,s
if s>800
exit
endif
endfor
? n
return 17
44.已知数列{f(n)}:f(1)=1,f(2)=4,当n=3,4,5,…时,f(n)=3*f(n-1)-f(n-2)。试求出100以内最小的自然数n使得此数列的第n项大于7654321
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)<=7654321 àif f(n)>=7654321
loop àexit
endif
endfor
? n
return 17
45.求出100以内最小的自然数n,使得从1开始的连续n个自然数的立方之和大于88888。
s=0
for n=1 to 100
a=n*3 àa=n^3
s=s+a
if s>88888
exit
endif
endfor
? a à?n
return 24

46.一球从100米高处落至平地,并且连续多次再反弹再落下,假设每次反弹的高度都是前一高度的3/4倍,试求出最小的自然数n,使得此球从开始下落至第n次着地时在垂直方向所经过的总路程超

过678米。
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

47.一球从100米高处落至平地,并且连续多次再反弹再落下,假设每次反弹的高度都是前一高度的3/4倍,试求出最大的自然数n,使得此球从开始下落至第n次着地时在垂直方向所经过的总路程不超过590米。
set talk off
h=100
s=0 às=100
for n=1 to 100
h=3/4*h
s=s+2*h
if s>=590
exit
endif
endfor
? n-1 à?n
return 6
48.设一数列{f(n)}:f(1)=1,当n>1时f(n)=1/(f(n-1)+1)。试求出此数列的前20项中小于0.618的项的数目。
f=1.000000
n=0
for k=1 to 20
f=1/f+1 àf=1/(f+1)
if f<0.618
n=n+1
endif
* ? k,f,n
endfor
? n
return 5
49.设一数列{f(n)}:f(1)=1,当n>1时f(n)=1/(f(n-1)+1)。试求出此数列的前20项中大于0.618的项的数目。
f=1.00000000
n=0
for k=2 to 20 àfor k=1 to 20
f=1/f+1 àf=1/(f+1)
if f>0.618
n=n+1
endif
* ? k,f,n
endfor
? n
set talk on
return 15
50.设有用26个字母表示的26个表达式:a=1,b=1/(a+1),c=1/(b+2),…,z=1/(y+25)。
试求出这26个字母中其值小于0.1的字母个数。
set talk off
lett=1
n=0
for k=1 to 26 àfor k=1 to 25
lett=1/(lett+k)
if lett<0.1
n=n+1
endif
endfor
? n
return 16


51.求所有符合算式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
if x*y=3627 àif (b*10+a)*y=3627
exit
endif
endfor
? x ? b*10+a
set talk on
return 93
52.设一个数列的前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
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
53.已知一个由分数组成的数列: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=f2+f1
f2=f1 àf2=f1+f2
endfor
? n
set talk on
return 20



54.已知数列{f(n)}:f(1)=1,f(2)=4,当n=3,4,5,…时,f(n)=3*f(n-1)-f(n-2)。试求出100以内最大的自然数n使得此数列的第n项不超过7654321。
set talk off
f1=1
f2=4
for n=3 to 100
f=3*f2-f1
* ? n,f
if f<=7654321 àif f>=654321
exit
endif
f1=f2
f2=f
endfor
? n à?n-1
return 16
55.回文指的是正读和反读都一样

的一串字符,如121、1221。试求出[1421,4112]内所有回文数的和。
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
return 74250


56.求出[123,789]内至少有两个数字相同的数的个数。
n=0
for x=123 to 789
a=int(x/100)
b=int((x-a)/10) àb=int((x-a*100)/10)
c=x-a-b àc=x-a*100-b*10
if a=b or a=c or b=c
n=n+1
endif
endfor
? n
return 180
57.求出[123,321]内恰好有两个数字相同的数的个数。
n=0
for x=123 to 321
a=int(x/100)
b=int(x-a*100)/10 àb=int((x-a*100)/10)
c=x-a*100-b*10
if a=b and a<>c or a<>b and a=c à加or b=c and b<>c
n=n+1
endif
endfor
? n
return 45


58.求出[123,456]内恰好有两个数字相同的所有整数之和。
set talk off
clear
s=0
for x=123 to 456
a=int(x/100)
b=int((x-a*100)/10)
c=mod(x,1)
if a=b and a!=c or a!=b and a=c à加or b=c and b<>a
s=s+x
endif
endfor
? s
set talk on
return 26406
59.求在[100,999]内所有不含数字0且各位数字之积被96整除的数之和。
set talk off
clear
s=0
for x=100 to 999
a=int(x/100)
b=int((x-a*100)/10)
c=mod(x,1) àc=mod(x,10)
if mod(a*b*c,96)=0 à加and a<>0 and b<>0 and c<>0
s=s+x
endif
endfor
? s
set talk on
return 26640
60.求出[100,600]内被除3余2并且被除5余3的整数的个数。
set talk off
clear
n=0
for x=100 to 600
if mod(x,3*5)=2*3 àif mod(x,3)=2 and mod(x,5)=3
n=x+1 àn=n+1
endif
endfor
? n
set talk on
return 33

61.求出[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
return 175
62.求出[1234,6789]内至少有两位数字是7的所有整数之和(注意AT()函数和STR()函数的功能)。
AT(子字符串,源字符串[,次数]) 区分大小写子串位置函数 返回子字符串在源字符串中指定出现次数的位置,但是要区分大小写 AT(’AB’,’ABCabCAB’)AT(’AB’,’ABCabCAB’,2)AT(’AB’,’ABCabCAB’,4) 170

set talk off
s=0
for x=1234 to 6789
if at('7',str(x),2)>=0 àif at(‘7’,str(x),2)>=2
s=x às=s+x
endif
endfor
? s
set talk on
return 678981
63.将大于1000且能被4和6中至少一个数整除的所有整数按从小到大顺序排列后,求前面20个数之和。
s=0
k=0
x=1000
do while k<=20 àdo while k<20
x=x+1
if mod(x,4*6)=0 àif not(mod(x,4)<>0 and mod(x,6)<>0)
s=s+x
k=k+1
endif
enddo
? s
set talk on
return 20610
64.若一个自然数恰好等于某个整数的平方,则称此数为完全平方数。如

144是完全平方数,
因为它等于12的平方。求[1000,9999]内所有完全平方数的和。
s=0
for x=1000 to 3000 (9999)
y=sqrt(x) ày=int(sqrt(x))
if x=y*y
s=s+x
endif
endfor
? x à?s
return 43539 317934
65.若一个自然数恰好是它的平方的末后几位数,则称此数为自同构数。如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
s=s+x
endif
endfor
? y à?s
set talk on
return 101114

66.求满足条件A*B=54321且使A+B的值最小的自然数对A、B中较大的一个数。
(提示:设A<=B,当A越大时A+B越小)
set talk off
c=54321
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
return 953
67.设a=123,b=541,求a/b的精确值中小数点后40位数字中数字1的个数。(提示:基于人工计算的思想)
set talk off
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
return 3
68.已知数列:1、2、4、7、10、15、…,其特点是:相邻两项之差恰好构成自然数列:
1、2、3、4、5、…。求此数列的前100项中能被4整除的项的个数。
set talk off
a=1
k=0
for n=1 to 100
a=a+n
if mod(n,4)=0 àif mod(a,4)=0
k=k+1
endif
endfor
? k
return 25
69.求出将十进制整数98765432等值转换为二进制形式表示后其中数字1的个数。
(提示:模拟人工计算的"2除取余"法)
n=0 à加n=0
a=98765432
p=2
do while a>0
r=mod(a,p)
if r=1
n=1 àn=n+1
endif
a=int(a/p)
enddo
? n
return 13
70.求出将十进制整数99887766554等值转换为十六进制形式表示后其中字母C的个数。
(提示:模拟人工计算的"16除取余"法)
a=99887766554
p=16
n=0
do while a=0 àdo while a>0
r=mod(a,p)
if r=11 àif r=12
n=n+r àn=n+1
endif
a=int(a/p)
enddo
? n
return 2

71.已知数列{f(n)}:f(1)=1,f(2)=1,当n>2时f(n)=f(n-2)+f(n-1)。试求此数列的第15项至第25项共11项之和。
dimension f(25)
f(1)=1
f(2)=1
s=0
for n=3 to 25
f(n)=f(n-2)+f(n-1)
if n<=11 àif n>=15
s=f(n) às=s+f(n)
endif
endfor
? s
return 195431
72.求出将十进制小数0.987654321等值转换为二进制形式表示后前25位小数中数字0的个数。(提示:使用"2乘取整"法)
x=0.987654321
n=0
for k=1 to 25
x=2**x àx=2*x
z=int(x)
x=x-z
if z=1 àif z=0
n=n+z àn=n+1
endif
endfor
? n
return 8
73.求出将十进制小数0.56789等值

转换为八进制形式的表示中前18位小数中数字3的个数。
(提示:使用"8乘取整"法)
x=0.56789
n=0
for k=1 to 18
x=8**x àx=8*x
z=int(x)
x=x-z
if z=3
n=n+z àn=n+1
endif
endfor
? n
return 3
74.对自然数A、B、C,若A其中A、B、C分别称为勾、股、弦。试求出弦为25000的勾股弦数组的个数。
set talk off
clear
c=25000
n=1 àn=0
for a=1 to c
b=int(sqrt(c*c-a*a))
if a*a+b*b=c*c à加and an=n+a àn=n+1
endif
endfor
? n
set talk on
return 5
75.对自然数A、B、C,若A其中A、B、C分别称为勾、股、弦。试求出弦为1300的勾股弦组数。
set talk off
clear
c=1300
n=0
for a=1 to c
b1=sqrt(c*c-a*a)
b=int(b1)
if b=b1 àif a*a+b*b=c*c and an=n+b àn=n+1
endif
endfor
? n
set talk on
return 7

76.求方程3x-7y=1在条件|x|<100且|y|<40下的整数解的个数。
set talk off
clear
n=0
for x=-99 to 99
y=int((3*x-1)/7)
if 3*x-7*y=1 or abs(y)<40 àor改and
n=n+x àn=n+1
endif
endfor
? n
set talk on
return 26
77.求方程3x-7y=1在条件|x|<100且|y|<40下的所有整数解的|x|+|y|的最大值。
set talk off
max=140 àmax=0
for x=-99 to 99
y=int((3*x-1)/7)
z=abs(x+y)
if 3*x-7*y=1 and abs(y)<40 and max>z àmax>z改maxmax=z
endif
endfor
? max
return 127
78.求方程4x+9y=1000的正整数解的个数。
set talk off
clear
n=0
for x=1 to 250 à250改249
y=int((1000-4*x)/9)
if 4*x+9*y=1000
n=n+x àn=n+1
endif
endfor
? n
set talk on
return 27
79.求方程9x+4y=2000的所有正整数解的|x-y|的最大值。
set talk off
clear
max=2000/4-2000/9 àmax=1
for x=1 to 230
y=int((1000-9*x)/4)
z=abs(x-y)
if 9*x+4*y=1000 and y>0 and max>z àmax>z改maxmax=z
endif
endfor
? max
set talk on
return 237
80.求方程9x+4y=1000的所有正整数解的|x-y|的最小值。
set talk off
clear
min=0 àmin=1000
for x=1 to 230
y=int((1000-9*x)/4)
z=abs(x-y)
if 9*x+4*y=1000 and y>0 and min>z
min=z
endif
endfor
? min
set talk on
return 3


81.求100-200内的所有素数的个数。(素质是指只能被1和本身整除的数)
n=0
for i=100 to 200
f=1
for j=2 to I àfor j=2 to int(sqrt(i))
if mod(i,j)=0
f=0
loop
endif
endfor
if f=1
n=n+1
endif
endfor
? n
return 21
82.求100-200内的所有素数的和。(素质是指只能被1和本身整除的数)
set talk off
clea
n=0
for i=100 to 200
f=1
for j=2 to I àfor j=2 to int(sqrt(i))
if mod(i,j)=0
f=0
exit
endif
endfor
f=1 àif f=1
n=n+1 àn=n+i
endif
endfor
? n
return 3167
83.求100-1000内的最大的素数。(素质是指只能被1和本

身整除的数)
set talk off
clea
n=0
for i=100 to 1000
f=1
for j=2 to I àfor j=2 to int(sqrt(i))
if mod(i,j)=0
f=0
loop
endif
endfor
if f=1
n=i
endif
endfor
? n
return 997
84.求100-1000内的第10个素数。(素质是指只能被1和本身整除的数)
n=0
k=0
for i=100 to 1000
f=1
for j=2 to I àfor j=2 to int(sqrt(i))
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
85.编写程序,计算10000以内有多少个这样的数,其个位数为6且该数能被9整除。
n=1 àn=0
for i=1 to 10000
if mod(i,6)=0 àif mod(i,10)=6
if mod(i,10)=9 àif mod(i,9)=0
n=n+1
endif
endif
endfor
? n
return 111


86.编写程序,计算10000以内所有十位数为6且该数能被7整除的数之和。
set talk off
clea
n=0
for i=1 to 10000
sw=mod(i,100) àsw=int(mod(i,100)/10)
if sw=6
if mod(i,10)=7 àif mod(i,7)=0
n=n+i
endif
endif
endfor
? n
return 719222
87. 编写程序,计算100-65374以内个位上的数等于百位上的数的个数。
set talk off
clea
n=100 àn=0
for i=1 to 65374
bw=mod(i,1000)/100 àbw=int(mod(i,1000)/100)
gw=mod(i,10)
if gw=bw
n=n+1
endif
endfor
? n
return 6528
88.编写程序,计算100-10000以内个位上的数小于百位上的数的所有数之和。
set talk off
clea
n=100
for i=100 to 10000
bw=mod(i,1000) àbw=int(mod(i.1000)/100)
gw=mod(i,10)
if gwn=n+1 àn=n+i
endif
endfor
? n
return 23314500

89.设某四位数的各位数字的平方和等于100,问共有多少个这种四位数?
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*2+b*2+c*2=100 àif a^2+b^2+c^2+d^2=100
n=n+1
endif
endfor
? n
set talk on
return 49
90.设某四位数的各位数字的立方和等于168,问共有多少个这种四位数?
set talk off
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*a+b*b+c*c+d*d=168 àif a^3+b^3+c^3+d^3=168
n=n+1
endif
endfor
? n
return 12

91.设某四位数的各位数字的立方和等于100,问满足这种条件的四位数且是素数的数共有多少个?
n=0
for x=1000 to 9999
f=1
for i=2 to int(sqrt(x))
if mod(x,i)=0
f=0
exit
endif
endfor
if f=1
a=int(x/1000)
b=int((x-a*1000)/100)
c=int(mod(x,100)/10)
d=mod(x,10)
if a*3+b*3+c*3=100 àif a^3+b^3+c^3+d^3=100
n=n+x àn=n+1
endif
endif
endfor
? n
return 4




92.设某四位数的各位数字的平方和等于100,问满足这种条件的最小的四位数且是素数的数是多少?
min=9999
for x=1000 to 9999
f=1
for i=2 to int(sqrt(x))
if mod(x,i)=0
f=0
exit
endif
endfor
if f=0

àif f=1
a=x/1000 àa=int(x/1000)
b=int((x-a*1000)/100)
c=int(mod(x,100)/10)
d=mod(x,10)
if a*a+b*b+c*c+d*d=100
min=x
exit
endif
endif
endfo
? min
return 1933
93.设某四位数的各位数字的平方和等于198,问满足这种条件的最大数和最小数之和是多少?
min1=1000 à9999
max1=1000
for x=1000 to 9999
a=int(x/1000)
b=int((x-a*1000)/100)
c=int(x/100)/10 àc=int(mod(x,100)/10)
d=mod(x,10)
if a*a+b*b+c*c+d*d=198
if max1x=max1 àmax1=x
endif
if min1>x
min1=x
endif
endif
endfor
? max1+min1
return 12749
94.把一张一元钞票,换成一分、二分和五分硬币,每种至少11枚,问有多少种方案?
n=1 àn=0
for yi=11 to 100
for er=11 to 20
for wu=11 to 20
if yi+er+wu=100 àif yi+er*2+wu*5=100
n=n+1
endif
endfor
endfor
endfor
? n
return 13
95.把一张一元钞票,换成一分、二分和五分硬币,每种至少1枚,问有多少种方案?
set talk off
clea
n=0
for yi=1 to 100
for er=1 to 20 à20改50
for wu=1 to 20
if yi+er+wu=100 àif yi+er*2+wu*5=100
n=n+yi àn=n+1
endif
endfor
endfor
endfor
? n
set talk on
return 461

96.把一张一元钞票,换成一分、二分和五分硬币,每种至少1枚,问兑换后硬币总数最多的与硬币
总数最少的枚数之差是多少?
set talk off
clea
min1=0 àmin=100
max1=0
for yi=1 to 100
for er=1 to 50
for wu=1 to 20
if yi+er+wu=100 àif yi+er*2+wu*5=100
t=yi+er+wu
if t>max1
t=max1 àmax1=t
endif
if min1>t
min1=t
endif
endif
endfor
endfor
endfor
? max1-min1
set talk on
return 73
97.把一张一元钞票,换成一分、二分和五分硬币,每种至少1枚,问兑换后其中
二分的硬币恰有20枚的方案共有多少种?
set talk off
n=1 àn=0
for yi=1 to 50 àfor yi=1 to 55
for wu=1 to 20
er=20
if yi+er+wu=100 àif yi+er*2+wu*5=100
n=n+1
endif
endfor
endfor
? n
return 11

98.已知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 mod(n,i)=0
s=s+1
endif
endfor
if mod(n,s)=0
c=c+1
endif
endfor
? c
set talk on
return 19
99.分子分母为正整数,分子小于分母的分数称为真分数。对于分数的分子分母取值范围为 [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 an=n+1
endif
endfor
endfor
? n
set talk on
return 287
100.求S=1-1/2+1/3-1/4+.....的前100项之和(精确到小数点后4位)
set talk off
clea
s=1.0000
f=1
for i=1 to 100
s=s-f/I às=s+(-1)^f/i
f=f àf=f

+1
endfor
? s
return 0.6882



相关主题
文本预览
相关文档 最新文档