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

Bạn chưa đăng nhập. Vui lòng đăng nhập để hỏi bài
nguyễn an phát

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. 
 

Nguyễn Lê Phước Thịnh
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.

nguyễn an phát
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.

nguyễn an phát
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.


Các câu hỏi tương tự
Hoàng Hugi
Xem chi tiết
Hoàng Hugi
Xem chi tiết
Hoàng Hugi
Xem chi tiết
Nguyễn Thiên Anh
Xem chi tiết
Tinh Hy
Xem chi tiết
Thương Nhi
Xem chi tiết
Lê Thị Thùy Dung
Xem chi tiết
Phụng Lã
Xem chi tiết
Nguyễn Thị Mơ
Xem chi tiết