急寻Free Pascal高手(请立刻进~)

来源:百度知道 编辑:UC知道 时间:2024/05/28 13:07:37
有几道Free Pascal题目
1.编程序求2--1000中的完数(因子和等于它本身的数为完数。例如28的因子是1,2,4,7,14,且1+2+4+7+14=28,则28是完数)。
2.编程序实现计算; 1+1/2+1/3+......+1/n的值(n由键盘输入)
3.小猴吃桃: 有一天小猴子摘下了若干个桃子, 当即吃掉了一半,还觉得不过瘾, 多吃了一个.第2天接着接着吃了剩下的桃子中的一半, 仍不过瘾, 又多吃了一个. 以后每天都是吃尚存桃子的一半零一个.到第10 天早上小猴子再去吃桃子时, 看到只剩下一个桃子了. 问小猴子第一天共摘下了多少个桃子?
底分5分,写出详细过程每道加5分,希望今天就能回答,如果觉得分数不够可以提出,在线等谢谢~

program perfect;
type fw=2..1000;{定义了一个子界类型,因为只用到2到1000之间的数,所以这样定义省空间}
var i:fw;
function perf(j:fw):boolean;{定义一个判断是否为完数的函数,返回值为布尔型}
   var n,k:integer;
   begin
     k:=0;
     for n:=1 to j div 2 do{j的1/2到j-1没有任何数是j的约数,所以直接不予考虑}
       if j mod n=0 then k:=k+n;{是约数的话求出和}
     perf:=k=j;
   end;
begin
   for i:=2 to 1000 do
     if perf(i)then write(i,' ');
   writeln
end.
2.
program fsh;
var h:double;n,i:longint;{h定义为双精度型,最大的好处是比real,single等保留更多小数位数}
begin
   readln(n);
   for i:=1 to n do
     h:=h+1/i;{在这个for循环结构里,i分别是1,2,...n,1/i的值也分别变化}
   writeln(h:0:5);{写出最终结果,保留5位小数}
end.
3.
这个题用倒推就可以,因为到了第十天,已经还剩一个了,所以可以肯定小猴子吃了9天的桃子,第九天吃之前=(1+1)*2,第八天吃之前=(第九天吃