基本算法

一、数论算法

1.求两数的最大公约数

function gcd(a,b:integer):integer;
begin
  if b=0 then gcd:=a
  else gcd:=gcd (b,a mod b);
end;

2.求两数的最小公倍数

function lcm(a,b:integer):integer;
  var t:integer;
  begin
    if a<b then begin
      t:=a;a:=b;b:=t;
    end;
    lcm:=a;
    while lcm mod b>0 do inc(lcm,a);
  end;

3.素数的求法
A.小范围内判断一个数是否为质数:

function prime (n: integer): Boolean;
  var I: integer;
  begin
    for I:=2 to trunc(sqrt(n)) do
    if n mod I=0 then begin
      prime:=false; exit;
    end;
    prime:=true;
  end;

B.判断longint范围内的数是否为素数(包含求50000以内的素数表):

procedure getprime;
  var
    i,j:longint;
    p:array[1..50000] of boolean;
  begin
    fillchar(p,sizeof(p),true);
    p[1]:=false;
    i:=2;
    while i=x then break
      else if x mod pr[i]=0 then exit;
    prime:=true;
  end;{prime}
Read More...

Some Online Judge Websites

USACO https://train.usaco.org/ (经典)

浙江大学 https://zoj.pintia.cn/

北京大学 http://poj.org/

VIJOS https://vijos.org/

同济大学 http://acm.tongji.edu.cn

天津大学 http://acm.tju.edu.cn/toj

哈工大 http://acm.hit.edu.cn/

吉林大学 http://acm.jlu.edu.cn

四川大学 http://acm.scu.edu.cn/soj/

汕头大学 http://acm.stu.edu.cn

中国科技大学 http://acm.ustc.edu.cn/ustcoj/

杭州电子科技大学 http://acm.hdu.edu.cn

湖南大学 http://acm.hnu.cn:8080/online

福州大学 http://acm.fzu.edu.cn

厦门大学 http://acm.xmu.edu.cn/JudgeOnline

华中科技大学 http://www.hustoj.org/

浙江工业大学 http://acm.zjut.edu.cn/onlinejudge/

香港信息学竞赛 HKOI http://judge.hkoi.org

UVA https://onlinejudge.org/ (题目很杂)

URAL https://acm.timus.ru (偏重数学)

SGU http://acm.sgu.ru

EL Judge http://acm.mipt.ru/judge/problems.pl

SPOJ https://pl.spoj.com/

E-OLIMP https://www.eolymp.com/