Online Judge | Problem Set | Authors | Online Contests | User | ||||||
---|---|---|---|---|---|---|---|---|---|---|
Web Board Home Page F.A.Qs Statistical Charts | Current Contest Past Contests Scheduled Contests Award Contest |
look at thisit builds the prime numbers in P and the number of them lgP it marks the elements of tinterval lo..hi which are not prime it build the D vector with the prime numbers from lo..hi with length lgD could please someone help me with the debug?:( const maxn=1000002;maxp=6550;oo=maxlongint; var V:array[0..maxn]of boolean; P:array[1..maxp]of longint; D:array[1..maxn]of longint; Min1,Min2,Max1,Max2,aux,lo,hi,j,i,lgp,lgd:longint; Procedure BuildPrime; var ok:boolean; begin lgp:=1;P[1]:=2; for i:=1 to (1 shl 15) do begin P[lgp+1]:=i*2+1; ok:=true; j:=1; while (sqr(P[j])<=P[lgp+1])and (j<=lgp)and ok do begin ok:=ok and (P[lgp+1]mod P[j]<>0); inc(j); end; if ok then inc(lgp); end; end; function max(a,b:int64):int64;begin if a>b then max:=a else max:=b;end; procedure BuildErastone; begin i:=1; while int64(sqr(P[i]))<=hi do begin if Lo mod P[i]=0 then aux:=0 else aux:=1; for j:=max((lo div P[i]+aux),2) to (hi div P[i]) do V[j*int64(P[i])-lo]:=true; inc(i); end; end; procedure BuildAll; begin lgd:=0; for i:=lo to hi do if not V[i-lo] then begin inc(lgd);D[lgd]:=i;end; end; begin BuildPrime; readln(lo,hi); BuildErastone; BuildAll; if lgd<2 then writeln('There are no adjacent primes.') else begin Min1:=0;Min2:=oo;Max1:=0;Max2:=0; for i:=1 to lgd-1 do begin if Min2-Min1>D[i+1]-D[i] then begin Min2:=D[i+1];Min1:=D[i];end; if Max2-Max1<D[i+1]-D[i] then begin Max2:=D[i+1];Max1:=D[i];end; end; writeln(Min1,',',Min2,' are closest, ',max1,',',max2,' are most distant.'); end; end. Followed by: Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator