p1689.pas

来自「高手写的所有acm例程 在acm.zju.edu.cn 上的题目的例程」· PAS 代码 · 共 58 行

PAS
58
字号
PROGRAM p1689;

VAR
        total,m,a,b             :Longint;
        whether                 :array[1..100000]of Boolean;
        prime                   :array[1..9592]of Longint;

PROCEDURE MakePrime;
var
        i,j                     :Longint;
begin
fillchar(whether,sizeof(whether),1);
total:=0;
for i:=2 to 100000 do
        if whether[i] then
                begin
                inc(total);
                prime[total]:=i;
                for j:=2 to 100000 div i do
                        whether[i*j]:=false;
                end;
end;

PROCEDURE Main;
var
        down,up                         :Longint;
        i                               :Longint;
        p,q,max,max_p,max_q             :Longint;
begin
max:=0;
for p:=1 to total do
        begin
        if prime[p]*prime[p]>m then break;
        for q:=p to total do
                begin
                if a*prime[q]>b*prime[p] then break;
                if prime[p]*prime[q]>m then break;

                if prime[p]*prime[q]>max then
                        begin
                        max:=prime[p]*prime[q];
                        max_p:=p;
                        max_q:=q;
                        end;
                end;
        end;
writeln(prime[max_p],' ',prime[max_q]);
end;

BEGIN
MakePrime;
while true do
        begin
        readln(m,a,b);
        if (m=0) then break;
        main;
        end;
END.

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?