C/C++算法实例(一)--数论算法

    学习C/C++还是不能停靠在文字的理解上,只有做题做题不断的做题才能有所提高,这是我学习C++是老师提供给我们的伪算法,下面希望初学者也能拿下来自己花时间算下,有不理解的,可以给我留言,相互交流!

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;
begin
if a 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<50000 do begin
if p[i] then begin
j:=i*2;
while j<50000 do begin
p[j]:=false;
inc(j,i);
end;
end;
inc(i);
end;
l:=0;
for i:=1 to 50000 do
if p[i] then begin
inc(l);pr[l]:=i;
end;
end;{getprime}

function prime(x:longint):integer;
var i:integer;
begin
prime:=false;
for i:=1 to l do
if pr[i]>=x then break
else if x mod pr[i]=0 then exit;
prime:=true;
end;{prime}

你可能感兴趣的:(C语言,C++)