Số nguyên tố tương đương

3

Nhập vào 2 số nguyên m,n kiểm tra xem chúng có phải là số nguyên tố tương đương không?

Hai số gọi là nguyên tố tương đương nếu chúng có cùng các ước số nguyên tố. Ví dụ 15 và 75 là các số nguyên tố tương đương. Bởi vì 15=3*5 trong khi 75=3*5^2, có cùng ước số nguyên tố là 3 và 5. Tương tự 12=2^2*3 và 18=2*3^2 là hai số nguyên tố tương dương vì có cùng hai ước số nguyên tố là 2 và 3. Tuy nhiên 12 và 60 ko nguyên tố tương đương vì 12=2^2*3 và 60=2^2*3*5, 60 có ước số nguyên tố 5 trong khi 12 không có.

Program NgTo_TD;
Uses Crt;
Type Mang=Array[1..100] Of Integer;
Var M,N:Integer;
{Ham kiem tra so co phai la NT hay ko}
Function SNT(n:integer):boolean;
Var i:integer;
Begin
 If (n=0)Or(n=1) then NT:=False
 Else
Begin
 i:=2;
 While (n mod i <> 0)and(i<Sqrt(n)) do i:=i+1; 
 If i>Sqrt(n) then NT:=True Else Nt:=False;
End;{if}
End;
{Function NT}

Function Nttd(N,M:Integer):Boolean;
Var J,K,I,D,Dem,S:Integer;
A,B:Mang;
 Begin
  D:=0;
  For J:=1 To N Do If (SNT(J)) And (N Mod J=0) Then 
    Begin D:=D+1; A[D]:=J End;
  Dem:=0;
  For K:=1 To M Do If (SNT(K)) And (M Mod K=0) Then 
    Begin Dem:=Dem+1; 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 M:');Readln(M); 
  Write('Nhap N:');Readln(N); 
  If (Nttd(M,N)) Then Writeln(M,' Va ',N,' La Hai So Nguyen To Tuong Duong')
  Else Writeln(M,' Va ',N,' Khong Phai La Hai So NT Tuong Duong');
  Readln
End.
3 2 votes
Article Rating
Share.

About Author

٩(●̮̮̃•̃)۶ Không có lẽ yêu trên đời quá khó ٩(͡๏̯͡๏)۶ Mà thôi yêu cũng chẳng dễ chút nào! ٩(×̯×)۶

Subscribe
Thông báo
guest
3 Comments
oldest
newest most voted
Inline Feedbacks
View all comments
TheCard
TheCard
3 years ago

program nguyen_to_tuong_ung; uses crt; var a : array[1..100] of integer; b : array[1..100] of integer; so1, so2,i : integer; kt : boolean; function ktsonguyento( a: integer) :boolean; var i : integer; begin if a=1 then begin ktsonguyento:=false; end else if a=2 then ktsonguyento:= true else for i:= 2 to a-1 do if a mod i=0 then begin ktsonguyento := false; break; end else ktsonguyento :=true; end; procedure kiemtra( c,d : integer); var i,t,x: integer; begin t:=0; for i:=1 to c do if c mod i=0 then if ktsonguyento(i)= true then begin t:= t+1; a[t]:=i; end; x:=0; for i:=1 to d… Read more »

khoa
khoa
1 year ago

bài này thì ko dùng hàm mà cũng chạy dc nè uses crt; var M,N,t:longint; i,k:integer; A,B:array[1..100] of integer; ok:boolean; function ngto(n:integer):boolean; var i:integer; begin ngto:=true; If n<2 then ngto:=false else for i:=2 to trunc(sqrt(n)) do if n mod i= 0 then ngto:=false; end; begin clrscr; Write('M= ');readln(M); Write('N= ');readln(N); t:=M; i:=2; k:=1; while t mod i= 0 do begin if t mod i=0 then A[k]:=i; repeat t:=t div i; until t mod i0; k:=k+1 end; t:=N; i:=2; k:=1; while t mod i= 0 do begin if t mod i=0 then B[k]:=i; repeat t:=t div i; until t mod i0;… Read more »

3
0
Would love your thoughts, please comment.x
()
x