例1.输入一个正整数N,把它分解成质因子相乘的形式。 如:36=1 X 2 X 2 X 3 X 3; 19=1 X 19
(提示:设因子为I,从2开始到N,让N重复被I除,如果能整除,则用商取代N,I为一个因子;如果不能整除,再将I增大,继续以上操作,直到I等于N。) program reex1;
var n,i:integer; begin
readln(n); write(n, '='); repeat
for i:=2 to n do
if n mod i=0 then begin write(I, '*'); n:=n div i; end;
i:=10; i:=i+1;
k:=0; until i=n;
while (i>=10) and (i<=30) do end. begin k:=k+i;
i:=i+8; end; writeln('k=',k); Read(n); k:=n; repeat
k:=k-1;
until n mod k = 0; write(k); 输入:12
while、repeat语句练习 例1-1:求s=1+1/2+1/3+??+1/n;恰好大于10时n的值;
program ex1_1; var
s:real; n:integer; begin
s:=0; n:=1; while s<=10 do begin
s:=s+1/n;
n:=n+1; {项数加1} end;
writeln(n); end.
例1-2:根据输入的自然数n,求1×2×3×??×n的值;
program ex1_2;
var n,i:integer; s:longint; begin
read(n); s:=1; i:=1; repeat
s:=s*i; {累乘} i:=i+1;
until i>n; {跳出循环需满足的条件} writeln(s); end.
例1_3:求数列a1,a2,a3,a4,??a20的和。
其中:a1=0 a2=1 a3=a1+a2;
a4=a2+a3; ?? program ex1_3;
var s,a1,a2,i:integer; begin
s:=0; i:=2; a1:=0; a2:=1; repeat
s:=s+a1+a2; a1:=a1+a2; a2:=a2+a1;
i:=i+2; {计算下一个项数i} until i>20; writeln(s); end.
例1_4:求数列的和:s=1+3+9+27+??+729;
program ex1_4;
var s,n:integer; begin
s:=0; n:=1; repeat
s:=s+n; {累加}
n:=n*3; {计算下一项} until n>729; writeln('s=',s); end.
2222
例1_5:求下式中n的最大值:2+4+6+??+n<1500;
program ex1_5;
var s,n:integer; begin
s:=0; n:=2; repeat
s:=s+n*n; {累加,注意累加的项数} n:=n+2; {计算下一项} until s>=1500; writeln('n=',n:4); end.
例2_1:读程序,写结果。
program ex2_1(input,output); var t,n,s:integer; begin
t:=1;n:=3;s:=0; while s<10 do begin t:=t*n; s:=s+t; end;
write('s=',s:6)
end. 例2_2:(repeat循环)
program ex2_2(input,output); var p,m:integer; begin
p:=20; m:=2; repeat
p:=p-m; m:=m+3; until m>p;
write('m,p=',m,' ',p); end.
结果:结果:s= 12 m,p=11 5