liuq_torres 2009-03-21 23:12
浏览 250
已采纳

有关一个pascal的初学者问题

[size=small]这几个题哪个高手会写,写一下哈!

(1).输入自然数n,求前n个合数(非素数),其素因子仅有2,3或5

(2).自然数a的因子是指能整除a的所有自然数,但不含a本身。例如12因子为1,2,3,4,6 若自然数a的因子之和为b,而且b的因子之和又是a,则称a,b为一对亲和数,求最小一对亲和数。

(3).求前n个自然数的平方和,要求不用乘法,如:3的平方和为3*3,可为3+3+3

(4).试用容积分别为17升,13升的两个桶为工具,从大油罐中倒出15升油,编程显示出具体的倒油过程。

(5).如果一个数从左边读和从右边读都是同一个数,就称为回文数,如:6886就是哦,找出所有3位回文数。

(6).任何大于2的自然数都可以写成不超过4个平方之和。
如:8=2的2次方+2的2次方,14=1的2次方+2的2次方+3的2次方
由键盘输入自然数N(2<n<2000),输出其不超过4个平方数之和的表达式。[/size]

  • 写回答

2条回答 默认 最新

  • ncradovi 2009-03-22 09:09
    关注

    [code="pascal"]

    program qinheshu;
    var i,m,k,j,p,q,t,x,y,s,r,c,b:longint;
    begin readln(x,y);
    k:=0;
    if x=1
    then x:=2;
    for i:=x to y
    do begin m:=i;
    q:=1; t:=1;
    while q<=sqrt(m) do begin inc(q);
    p:=q;
    while (m mod q=0) do begin p:=p*q;
    m:=m div q;
    end;

    p:=(p-1)div (q-1);
    t:=t*p;
    end;
    if m>1 then begin p:=m+1;
    t:=t*p;
    end; s:=t-i;
    m:=t-i;
    q:=1;
    t:=1;
    if m>i then begin while q<=sqrt(m) do begin inc(q);
    p:=q;
    while (m mod q=0)
    do begin p:=p*q;
    m:=m div q;
    end;

    p:=(p-1) div (q-1);
    t:=t*p;
    end;
    if m>1 then begin p:=m+1;
    t:=t*p; end;
    if (t-s=i)and(s<>i) then inc(k);
    end;
    end;
    writeln(k);
    end.

    [/code]

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?