比赛 20101101 评测结果 AAAATAATEE
题目名称 整数合并 最终得分 60
用户昵称 ZhouZn1 运行时间 0.000 s
代码语言 Pascal 内存使用 0.00 MiB
提交时间 2010-11-01 21:47:38
显示代码纯文本
program zzn;
const arr:array[1..168]of integer=
 (2,    3,    5,    7,   11,   13,   17,   19,   23,   29,
   31,   37,   41,   43,   47,   53,   59,   61,   67,   71,
   73,   79,   83,   89,   97,  101,  103,  107,  109,  113,
  127,  131,  137,  139,  149,  151,  157,  163,  167,  173,
  179,  181,  191,  193,  197,  199,  211,  223,  227,  229,
  233,  239,  241,  251,  257,  263,  269,  271,  277,  281,
  283,  293,  307,  311,  313,  317,  331,  337,  347,  349,
  353,  359,  367,  373,  379,  383,  389,  397,  401,  409,
  419,  421,  431,  433,  439,  443,  449,  457,  461,  463,
  467,  479,  487,  491,  499,  503,  509,  521,  523,  541,
  547,  557,  563,  569,  571,  577,  587,  593,  599,  601,
  607,  613,  617,  619,  631,  641,  643,  647,  653,  659,
  661,  673,  677,  683,  691,  701,  709,  719,  727,  733,
  739,  743,  751,  757,  761,  769,  773,  787,  797,  809,
  811,  821,  823,  827,  829,  839,  853,  857,  859,  863,
  877,  881,  883,  887,  907,  911,  919,  929,  937,  941,
  947,  953,  967,  971,  977,  983,  991,  997);

var
        ans,a,b,p,i,j:longint;
        f:array[1..1000]of integer;
        v:array[1..1000]of boolean;
function ok(x:longint):boolean;
var
        i:integer;
begin
        if x=2 then exit(true);
        if x =1 then exit(false);
        for i:=2 to trunc(sqrt(x)) do if x mod i=0 then exit(false);
        exit(true);
end;
function gcd(a,b:longint):longint;
var
        i,j:longint;
begin
      for i:=150 downto 1 do
      if (a mod arr[i]=0)and(b mod arr[i]=0)then exit(arr[i]);
    exit(1);
end;
procedure init;
begin
        assign(input,'setb.in');
        reset(input);
        assign(output,'setb.out');
        rewrite(output);
        for i:=1 to 1000 do f[i]:=i;
        readln(a,b,p);

end;
procedure closef;
begin
        close(input);
        close(output);
end;
function getfather(v:longint):longint;
begin
    if f[v]=v then exit(v) else
     f[v]:=getfather(f[v]);
     exit(f[v]);
end;
procedure hebing(x,y:longint);
var
        i,j:longint;
begin
        i:=getfather(x);
        j:=getfather(y);
        if i<>j then f[i]:=j;
end;
function main:longint;
begin
        if b<a then  exit(0);
        if b=0 then exit(0);
        for i:=a to b-1 do
         for j:=i+1 to b do if getfather(i)<>getfather(j) then
          if gcd(i,j)>=p then
           begin
               hebing(i,j);
           end;
        ans:=0;
        for i:=a to b do f[i]:=getfather(i);
        fillchar(v,sizeof(v),0);
        for i:=a to b do v[f[i]]:=true;
        for i:=a to b do if v[i] then inc(ans);
        exit(ans);
end;
begin
        init;
        writeln(main);
        closef;
end.