第三章 综合题解
综合测试题(一)
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、寻找数:求所有这样的三位数,这些三位数等于它各位数字的立方和。
例如,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