算法教程4

这篇博客介绍了四个使用循环和条件判断解决的算法问题,包括寻找特定三位数、找到满足特定条件的最小自然数、查找特殊的素数和回文数,以及寻找成等差的素数序列。每个问题都提供了相应的 Pascal 语言程序实现,展示了穷举法和条件判断在算法中的应用。
摘要由CSDN通过智能技术生成
第三章  综合题解
综合测试题(一)
1、寻找数:求所有这样的三位数,这些三位数等于它各位数字的立方和。
   例如,153=13 +53 +33 。
    [解]穷尽三位数,用一个循环语句。其数码可用“模取”运算MOD完成。
   [程序]
    PROGRAM lifang;
    uses crt;
    var i,a,b,c:integer;
    begin
      clrscr;
      for i:=100 to 999 do
        begin c:=i mod 10; {取个位数}
          b:=(i div 10) mod 10; {取十位数}
          a:=i div 100;  {取百位数}
          if i=a*a*a+b*b*b+c*c*c then writeln(i:6);
        end;
    end.   
2、最小自然数:求具有下列两个性质的最小自然数n:
    (1)n的个位数是6;
    (2)若将n的个位数移到其余各位数字之前,所得的新数是n的4倍。
    [解]仍用穷举法寻找,当找到一个符合条件者便停止。“找到便停止”的重复,宜采用repeat-until循环。
    由于不知道n是几位数,个位数移到前面去应借助一个指定位数的数。设为e。
    [程序]
     program minnum;
     var  n,e:integer;
     begin e:=1;n:=1;
       repeat  e:=10*e;
         repeat n:=n+1;
         until not((n=e)or((10*n+6)*4=(6*e+n)));
       until ((10*n+6)*4<>6*e+n);
       writeln(10*n+6);
     end.
3、找素数:寻找160以内的素数,它的倒序数(如123的倒序数为321)、数码和、数码积不是素数便是1。
    [解]倒序数、数码和、数码积都需对原数分解,分解后再查它们是否符合条件。
    [程序]
    program sushu;
    uses crt;
  var i,j,n,s,p,f:integer;
    function cond(k:integer):boolean;
      var j:integer;b:boolean;
    begin  b:=true; {为1时表示k为素数}
      if k<>1 then for j:=2 to k-1 do if k mod j=0 then b:=false;
      if k=0 then cond:=false else cond:=b;
    end;
    begin {MIAN}  clrscr;
      for i:=2 to 160 do
      if cond(i) then
        begin  j:=i;n:=0;s:=0;p:=1;
          while j<>0 do
            begin f
  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值