已阅读5页,还剩7页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
程序操作题一、特殊数字问题编程求所有的水仙花数。水仙花数是指这样的三位数,其各位数字的立方和等于该数本身。如: 13+53+33=153clear & 清理屏幕for i=100 to 999 & 判断的范围定围100到999a=int(i/100) & 分离出i的百位b=int(i/10)%10 & 分离除出i的十位c=i%10 & 分离出i的个位if i=a3+b3+c3 & 判断是否满足条件?i & 显示水仙花数的值endifendforretu (答案:153 370 371 407)回文数是指正读和反读都一样的正整数。例如1221是回文数。求出1000,9999以内的所有回文数的个数。clear & 清理屏幕n=0 & 用来保存回文数的个数for i=1000 to 9999 & 判断的范围qw=int(i/1000) & 分离出i的千位bw=int(i/100)-qw*10 & 分离出i的百位sw=int(i/10)-int(i/100)*10 & 分离除出i的十位gw=mod(i,10) & 分离出i的个位if qw=gw and bw=sw &如果千位和个位相等并且十位和百位相等n=n+1 & 累加求和?n,i & 显示回文数的个数,值endifendfor (答案:90)同构数是指这样一个正整数,它出现在它的平方数的右边。例如 5 的平方是 25,5出现在其平方数25的右边,25 的平方是 625,25 出现在其平方数 625 的右边,因此 5 和 25 都是同构数。求2,1000之间同构数的个数。(提示:若x是m位同构数,则x的平方除以)(10的m次方的余数就是x 若x是m位同构数,则x的平方除以10的m次方的余数就是x)clearn=0for x=2 to 1000y=x*xm=len(ltrim(str(x) & 设x是m位数if mod(y,10m)=xn=n+1endifendfor? nretu (答案:6) 若一个四位正整数是另一个正整数的平方,且各位数字的和是一个平方数,则称该四位正整数是“四位双平方数”。例如:由于7396=862,且7+3+9+6=25=52,则称7396是“四位双平方数”。求所有“四位双平方数”的和。clears=0for i=1000 to 9999 a=int(i/1000) b=mod(int(i/100),10) c=mod(int(i/10),10) d=mod(i,10) x=a+b+c+dif int(sqrt(x)*int(sqrt(x)=x and int(sqrt(i)*int(sqrt(i)=i &if sqrt(x)=int(sqrt(x) and sqrt(i)=int(sqrt(i) s=s+i endifendfor? sreturn (答案:81977) 勾股数组(勾股弦数)是满足公式: A2+B2=C2 (假定ABC)的一组正整数(A,B,C),例如,(3,4,5)是勾股弦数,因为:32+42=52。求A,B,C均小于或等于100的勾股弦数的个数。clearn=0& 用来保存倒勾股数组的个数for c=1 to 100 & c的判断的范围定为1到100for b=1 to c & b的判断的范围定为1到ca=int(sqrt(c*c-b*b)if a*a+b*b=c*c and ab and bBC,求A,B,C均小于或等于100的倒勾股数有多少组?clear & 清理屏幕n=0 & 用来保存倒勾股数组的个数for a=1 to 100 & 判断的范围定为1到100for b=1 to a & 判断的范围定为1到ac=sqrt(1/a2+1/b2) & c的值为1/a2+1/b2开平方 if 1/c=int(1/c) and sqrt(1/c)=100 & 如果1/c是平方数且c不超过100n=n+1 & 计数器+1? n,a,b,int(1/c) & 显示个数,a,b,c 及他们产生的平方数endifendforendfor ? nretu 对自然数A、B、C,若AB3exit endifendfor retu (答案:959)求出20677和42067的最大公约数cleara=20677b=42067for d=1 to aif mod(a,d)=0 and mod(b,d)=0max=dendifendfor? maxreturn 答案: 713求出 9269 和 8671 的最小公倍数。(算法提示:a与b的最小公倍数是 a 的倍数中第1个被b整除的数。)cleara=9269b=8671for k=a to a*b step aif mod(k,b)=0exitendifendfor? kreturn (答案:268801)500之内能被3或7整除但不能被5和2整除,求满足以上条件的数的个数与他们的和。clearn=0 & 保存满足条件的个数s=0 & 保存满足条件的数的和for i=1 to 500if (mod(i,3)=0 or mod(i,7)=0) and mod(i,2)!=0 and mod(i,5)!=0 & if (mod(i,3)=0 or mod(i,7)=0) and not (mod(i,2)=0 or mod(i,5)=0) & 判断是否满足“能被3或7整除但不能被2和5整除”n=n+1 & 计数器+1s=s+i & 累加求和endifendfor?n,s三、因子问题求559399的所有非平凡因子(即除1和它本身以外的约数)中最小的cleara=559399for n=2 to a if mod(a,n)=0 ?n exit endifendforreturn 答案:73求出203267的所有真因子(即小于它本身的约数)中最大的因子数cleara=203267n=0for b=1 to a-1 if mod(a,b)=0 max=b endifendfor? max return利用分解质因数的方法求出18000中含有质因数的个数(相同的重复计数,例如,180中含有5个质因数:2、2、3、3、5)。set talk offclearx=18000n=0k=2do while x1if mod(x,k)=0n=n+1x=x/kloopendifk=k+1enddo? nset talk onreturn利用分解质因数的方法求出18000中的最大质因数(例如,180中最大质因数为5)。 set talk offset talk offcleara=18000max=1b=2do while a1if mod(a,b)=0max=b& ?ba=a/bloopendifb=b+1enddo? maxset talk onreturn某些分子和分母都是二位正整数的真分数具有下列特点:如果将该分数的分子个位数和分母十位数同时去掉,所得结果正好等于原分数约分后的结果,例如16/64=1/4,求满足上述条件的所有真分数个数。clean=0for i=10 to 98for j=i+1 to 99a=int(i/10)b=mod(j,10)if i/j=a/b and b0n=n+1endifendforendfor?nretu若某真分数满足下述条件:分子分母都是两位正整数;分子的两位数字之和与分母的两位数字之和组成新的分数,该分数与原分数的值相等,如:63/84=(6+3)/(8+4)。求所有具有这种特点的真分子(非约简真分数)的个数以及分子与分母之和的和。 clearn=0s=0for a=11 to 99 & 分母 for b=10 to a-1 & 分子a1=int(a/10)a2=mod(a,10)b1=int(b/10)b2=mod(b,10)if (b1+b2)*a=b*(a1+a2)n=n+1s=s+a+b*?a,b,sendifendforendfor? n,sreturn分子分母为正整数,分子小于分母且分子分母无公因数的分数称为最简真分数。对于分数的分母取值范围为 50, 90 时的最简真分数共有多少个? clean=0for a=2 to 89 & 分子 for b=50 to 90& 分母 if ab & 分子应该小于分母gyz=1 & 公因子for x=2 to a if mod(a,x)=0 and mod(b,x)=0 & 判断分子和分母是否有公约数gyz=x & 有公约数则不是最简真分数exit endif endfor if gyz=1 & 没有公约数则是最简真分数n=n+1 endifendifendforendfor? nreturn endfor 一个正整数如果恰好等于其所有真因子之和,则称这个数为“完数”,(整数n的真因子是指除n以外的所有能整除n的数,如28的真因子有:1、2、4、7、14)。求1,1000中所有完数之和。clearset talk offn=0s=0for i=2 to 1000t=0for j=1 to i-1if mod(i,j)=0 & j是i的真因子 t=t+j & 真因子之和endifendforif t=i & i与其真因子之和t相等 n=n+1s=s+i?iendifendfor?n =,str(n,5)?s =,str(s,7)set talk onreturn 若某整数n的所有因子之和是n的倍数,则称 n 为多因子完备数,如28,其所有因子之和为56。求1,500之间有多少个多因子完备数。clearset talk offn=0for i=1 to 500t=0 & 存放所有因子之和for j=1 to iif mod(i,j)=0t=t+j & 所有因子之和endifendforif mod(t,i)=0 &因子之和是i的倍数n=n+1?iendifendfor?n =,str(n,5)set talk onreturn 四、素数问题素数 仅能被1和它本身整除的数。编程求出100,200的素数的个数与他们的和。set talk offclean=0s=0for i=100 to 200for j=2 to i-1if mod(i,j)=0exitendifendforif j=in=n+1s=s+iendifendfor? n,sreturn 一个自然数是素数,且它的数字位置经过任意对换后仍为素数,则称为绝对素数。如13,试求所有两位绝对素数的个数。s=0for i=10 to 99j=mod(i,10)*10+int(i/10)f1=1for k=2 to i-1if mod(i,k)=0f1=0endifendforf2=1for k=2 to j-1if mod(j,k)=0f2=0endifendforif f1=1 and f2=1s=s+1endifendfor? sreturn梅森尼数是指能使2n-1为素数的数n,求1, 21范围内梅森尼数的最大值以及个数与和? set talk offcleamax=0s=2n=0h=0for x=2 to 21 s=s*2 & s存放2xflag=1for i=2 to int(sqrt(s-1)if mod(s-1,i)=0 & 判断s即2x-1是否为素数flag=0exitendifendforif flag=1 ?x max=x & 最大值n=n+1 & 个数h=h+x & 和endifendfor? max? n,hreturn若两个素数之差为2,则称这两个素数为双胞胎数。求200, 1000内双胞胎数的对数与最大一对双胞胎数的和。clean=0for i=200 to 998a=2b=int(sqrt(i)do while abj=i+2c=2d=int(sqrt(j)do while cd n=n+1 ma=i *存放最大的amb=j *存放最大的bendifendifendfor?n,”对”?最大的一对双胞胎数为:,ma,mb?最大的一对双胞胎数之和为:,ma+mbreturn若两个连续的自然数的乘积减 1 后是素数,则称这两个连续自然数为友数对,该素数称为友素数,如:2*3-1=5,因此2与3是友数对,5是友素数,求2,49之间有多少友数对。clean=0for i=2 to 48k=i*(i+1)-1flag=1for j=2 to sqrt(k)if mod(k,j)=0flag=0exitendifendforif flag=1n=n+1endifendfor ?n 如果一个素数从个位开始自右向左逐个去掉每位数字后,每次所得的数都是素数,则称该数为超级素数,求100,999内超级素数的个数。clear n=0 & 超级素数个数S=0 & 超级素数和for i=100 to 999 & 判断的范围定围100到999if prime(i) and prime(int(i/10) and prime(int(i/100) & 如果i是素数并且i去掉个位是素数去掉十位是素数n=n+1 & 计数器加1s=s+i & 累加器加i? n,i & 显示超级素数的个数与值endifendfor?n,s function prime(x) &函数prime用来判断一个数是否为素数如果一个素数其各位数字均不为0,而且从高位开始依次去掉每位数字后,每次所得仍为素数(1不是素数),则称该数为逆向超级素数。例如,617,17,7都是素数,因此617是逆向超级素数,尽管503,03,3都是素数,但它不是逆向超级素数,因为它包含有0。试求100,999之内的所有逆向超级素数的个数及和。clear n=0 & 超级素数个数S=0& 超级素数和for i=100 to 999 & 判断的范围100到999if prime(i) and prime(mod(i,100) and mod(i,100)10 and prime(mod(i,10) and mod(i,10)!=0 *如果i是素数并且i去掉百位是素数去掉十位是素数,且都不包含n=n+1 & 计数器加1s=s+i & 累加器加i? n,i & 显示逆向超级素数的个数与值endifendfor?n,sfunction prime(x)&函数prime用来判断一个数是否为素数function prime(x)do case case x=0 or x=1return(.f.)case x=2return(.t.)otherwisefor j=2 to sqrt(x)if x%j=0return(.f.)endifendforif jsqrt(x)return(.t.)endifendcase德国数学家哥德巴赫曾猜测:任何大于6的偶数都可以分解成两个素数(素数对)的和。但有些偶数可以分解成多种素数对的和,如: 10=3+7,10=5+5,即10可以分解成两种不同的素数对。试求1234可以分解成多少种不同的素数对(注: A+B与B+A认为是相同素数对)clear & 清理屏幕c=0 & 用来保存素数对的个数a=1234 & 用变量来存放需拆分的数for i=2 to a/2 & 判断的范围定围2到a除以2if prime(i) and prime(a-i) & 如果i是素数并且a-i也是素数c=c+1 & 素数对的个数?c,int(i),int(a-i) & 显示素数对的个数,值endifendfor&函数prime用来判断一个数是否为素数function prime(x)for j=2 to sqrt(x)if x%j=0return(.f.)endifendforif jsqrt(x)return(.t.)endif五、数列问题编程求Fibonacci数列:1,1,2,3,5,8的第30个数,如下所示,求fib(30) fib(1)=1 n=1 F1=1fib(2)=1 n=2 F2=1 fib(n)=fib(n-1)+fib(n-2) n=3FN=FN-1+FN-2 set talk offclearf1=1f2=1for n=3 to 30f3=f1+f2f1=f2f2=f3endfor? f3set talk onreturn 求1!+3!+5!+(2K+1)!,要求在其和大于20000时中止程序运行。cleai=0s=0do while .T. i=i+1 if i%2=0 loop endif if s20000 exit endif s=s+jieceng(i)enddo?s利用格里高利公式:/4=1-1/3+1/5-1/7+1/9-1/11+-1/99,求的值。要求:按四舍五入的方式精确到小数点后第二位。set talk offclears=0k=-1for i=1 to 99 step 2k=-ks=s+k/iendfor?round(4*s,2)set talk onretuE数列E数列满足下列公式:数列E(1)=E(2)=1 E(n)=(n-1)*E(n-1)+(n-2)*E(n-2) (n2) 每一个E(n),(n=1,2,)称为E数。求1, 30000之内E数的个数。 求不超过30000的最大E数的值。cleaset talk offa=1b=1n=2t=1do while bmaxbt=bendifn=n+1enddo?maxb?nset talk onreturn已知某数列满足下列公式:f(0)=f(1)=1f(2)=0f(n)=f(n-1)-2f(n-2)+f(n-3) (n2)求f(10)到f(60)的和。cleadime f(100)sum1=0f(1)=1f(2)=1f(3)=0for n=4 to 61f(n)= f(n-1)-2*f(n-2)+f(n-3)endffor i=11 to 61sum1=sum1+f(i)endf?sum1retu已知一个由分数组成的数列:1/2,2/3,3/5,5/8,8/13,其特点:是从第2个分数起,每个分数的分子都是前一分数的分母而其分母都是其前一分数的分子与分母之和。试求出此数列的前20项之和(要求按四舍五入的方式精确到小数点后第二位)。clearf1=1f2=2s=0for n=1 to 20s= s+f1/f2 f=f1+f2f1=f2f2=f endfor? round(s,2)return 求出100以内最小的自然数 n,使得从1开始的连续 n个自然数的倒数之和大于3.6。set talk offclears=0for n=1 to 100s=s+1/nif s3.6exitendifendfor? nset talk onreturn闰年问题 编程求从1000年到2050之间有多少闰年。clearn=0for i=1000 to 2050if n%4=0 and n%100!=0 or n%400=0n=n+1endifendfor?nretu人口递增问题某国在2000年时人口总数为1亿,若以每年3.5% 的速度递增,试求出至少要到哪一年该国人口总数才会翻一番。clears=1n=2000do while s2n=n+1s=s*1.035enddo? nreturn 猴吃桃 一只猴子一天从山上摘了一袋桃子,从这天开始,它每天都要把袋中的桃子平分为二堆,吃掉其中的一堆,然后再从剩下的桃中拿出一个解馋,等到第10天,它发现袋中只有一个桃可吃了,问猴子总共摘了多少个桃? clean=1 & 最后一天桃数为1for i=9 to 1 step -1 & 从倒数第2天开始倒推n=(n+1)*2 &第i天的桃数为第i-1天的一半减1endfor?nretu百钱买百鸡用100钱买100只鸡,公鸡一只五钱,母鸡一只三钱,小鸡三只一钱,编程计算共有几种买法 (要求每种鸡至少要买1只)?clearn=0 &计数变量存放买法种数for gj=1 to 19for mj=1 to 31xj=100-gj-mjif n=n+1*?n,gj,mj,xj &输出买法种数及各多少只endifendforendfor?n &输出买法种数return百马驮百瓦 下列程序解百马驮百瓦问题。大马、小马和马驹共100匹,大马一驮三,小马一驮二,马驹二驮一,共100片瓦一次驮完,三种马都要驮,共有多少种组合,填空完成程序。(保留整数位)set talk offclears=0dm=1do while dm=100/3 xm=1 do while xm=590exitendif endfor? nreturn矩阵问题有一个4行5列的数表,位于第m行和第n列交叉处的数的值为m+n。求出此数表中所有数的和。cleardimension a(4,5)S=0for m=1 to 4for n=1 to 5a(m,n) =m+ns=s+a(m,n)endforendfor? sreturn 自然数对若两个自然数A,B的和与差(去绝对值)都是平方数,则称(A,B)为自然数对。若自然数对(A,B)满足下列条件:AB; (A,B)与(B,A)视为同一个自然数对;求1,100 自然数对的对数以及这些自然数对中所有A之和,所有B之和。 clean=0s1=0s2=0for b=1 to 99for a=b+1 to 100if int(sqrt(abs(a+b)
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025建筑材料制品购销合同范本
- 2025版类风湿性关节炎常见症状及科学护理
- 尿道损伤健康宣教
- 2025版营养护理要点
- 2025版乙肝常见症状及护理程序
- 企业面试公司介绍
- 2025版中风急性期症状及护理建议
- 5.5点击新材料(沪粤版)课件
- 2025年icu护士三基考试试题及答案
- 2025国家电网安规变电部分考试题库及答案
- 2024-2025学年辽宁省丹东市元宝区丹东市金汤小学北师大版六年级上册期中测试数学试卷(含答案)
- 我们只有一个地球13篇
- 2025贵州玉屏侗族自治县人民医院第一批招聘编外人员26人考试模拟试题及答案解析
- 氢能管道输送项目分析方案
- DHCP课件讲述教学课件
- 风电大件运输安全培训课件
- 学堂在线 中国经济概论 章节测试答案
- 深圳保洁安全培训课件
- 2025广西物资学校公开招聘非实名编工作人员2人笔试备考试题及答案解析
- 污水处理池管理制度
- 人工智能+农业绿色发展模式研究报告
评论
0/150
提交评论