Bài 10: Cấu trúc lặp

NP

Bài 4. (4 điểm): Hai số tự nhiên được gọi là Nguyên tố tương đương nếu chúng có chung các ước
số nguyên tố. Ví dụ các số 75 và 15 là nguyên tố tương đương vì cùng có các ước nguyên tố là 3
và 5. Cho trước hai số tự nhiên N, M. Hãy viết chương trình kiểm tra xem các số này có là
nguyên tố tương đương với nhau hay không. 
 

NT
26 tháng 3 2021 lúc 22:50

uses crt;

var i,n,m,k,d:integer;

{---------------chuong-trinh-con-tim-ucln--------------------}

function ucln(x,y:integer):integer;

var t:integer;

begin

while y<>0 do

begin

t:=x mod y;

x:=y;

y:=t;

end;

ucln:=x;

end;

{------------chuong-trinh-con-kiem-tra-so-nguyen-to-------------------}

function nt(b:longint):boolean;

var j:longint;

begin

nt:=true;

if (b=2) or (b=3) then exit;

nt:=false;

if (b=1) or (b mod 2=0) or (b mod 3=0) then exit;

j:=5;

while j<=trunc(sqrt(b)) do

begin

if (b mod j=0) or (b mod (j+2)=0) then exit;

j:=j+6;

end;

nt:=true;

end;

{---------------chuong-trinh-chinh---------------------}

begin

clrscr;

write('Nhap N: '); readln(N);

write('Nhap M: '); readln(M);

d:=0;

k:=ucln(N,M);

for i:=1 to k do

if nt(i) then d:=d+1;

if d>0 then writeln('2 so nay tuong duong voi nhau')

else writeln('2 so nay khong tuong duong voi nhau');

readln;

end.

Bình luận (1)
NP
3 tháng 6 2021 lúc 9:22

uses crt;

var i,n,m:integer;

a,b:array[1..100]of integer;

function nt(n:integer):boolean;

begin

  if n<2 then nt:=false;

  for i:=2 to n div 2 do

  if n mod i=0 then nt:=false;

end;

function nttd(n,m:integer):boolean;

var i,j,k,d,dem,s:integer;

a,b:array[1..100]of integer;

begin

  nttd:=false;

  d:=0;

  for j:=1 to n do

  if (nt(j))and(n mod j=0) then

  begin

    inc(d);

    a[d]:=j;

  end;

  dem:=0;

  for k:=1 to n do

  if (nt(k))and(m mod k=0) then

  begin

    inc(dem);

    b[dem]:=k;

  end;

  s:=0;

  if d=dem then for i:=1 to d do if a[i]=b[i] then

  inc(s);

  if s=d then nttd:=true else nttd:=false;

end;

BEGIN

  clrscr;

  write('nhap n,m:');readln(n,m);

  if nttd(n,m) then writeln(n,' va ',m,' la nguyen to tuong duong')

  else writeln(n,' va ',m,' khong phai la nguyen to tuong duong');

  readln;

END.

Bình luận (0)
NP
3 tháng 6 2021 lúc 9:24

uses crt;

Var M,N,d,i,luun,luum:integer;

Function USCLN(m,n: integer): integer;

Var r: integer;

Begin

luun:=n;luum:=m;

While n<>0 do

begin

r:=m mod n; m:=n; n:=r;

end;

USCLN:=m;

End;

function nttd:integer;

begin

  d:=USCLN(M,N); i:=2;

  While d<>1 do

  begin

    If d mod i =0 then

    begin

      While d mod i=0 do d:=d div i;

      While M mod i=0 do M:=M div i;

      While N mod i=0 do N:=N div i;

    end;

    Inc(i);

  end;

  If M*N=1 then Write(luum,'  va ', luun,' la so nguyen to tuong duong.')

  Else Write(luum ,' va  ',luun ,' khong phai la so nguyen to tuong duong.');

end;

BEGIN

  clrscr;

  Write('Nhap M,N:'); Readln(M,N);

  nttd;

  Readln;

END.

Bình luận (0)

Các câu hỏi tương tự
HH
Xem chi tiết
HH
Xem chi tiết
HH
Xem chi tiết
NA
Xem chi tiết
TH
Xem chi tiết
TN
Xem chi tiết
LD
Xem chi tiết
PL
Xem chi tiết
NM
Xem chi tiết