program Semiprimes; var currentnumber, temp: longint; isprime: boolean; infile,outfile:text; L,U: longint; prime : array[1..78500] of longint; x, y: longint; numfactors : integer; semicounter : longint; begin prime[1]:=2; prime[2]:=3; prime[3]:=5; prime[4]:=7; prime[5]:=11; currentnumber:=11; for x:=6 to 78500 do begin repeat currentnumber:=currentnumber + 2; y:=1; isprime:=true; repeat inc(y); if currentnumber mod prime[y] = 0 then isprime:=false; until (isprime=false) or (prime[y] > sqrt(currentnumber)); until isprime; prime[x]:=currentnumber; end; assign(infile,'DATA11.txt'); reset(infile); assign(outfile,'OUT11.txt'); rewrite(outfile); for x:= 1 to 5 do begin readln(infile,L); readln(infile,U); semicounter := 0; for currentnumber := L to U do begin numfactors:=0; y:=1; temp:=currentnumber; while temp > 1 do begin if temp mod prime[y] = 0 then begin temp := temp div prime[y]; inc(numfactors); if numfactors > 2 then temp := 0; end else inc(y); end; if numfactors = 2 then inc(semicounter); end; writeln(outfile,semicounter); end; close(infile); close(outfile); end.