Diễn đàn tin học Nguyễn Văn Linh

The second house for every one
 
IndexTrợ giúpTìm kiếmThành viênĐăng kýĐăng Nhập

Share | 
 

 Giải bài các số nguyên tố tương đương

Xem chủ đề cũ hơn Xem chủ đề mới hơn Go down 
Tác giảThông điệp
littlelee
Admin
Admin


Tổng số bài gửi : 415
Join date : 20/12/2009
Age : 21
Đến từ : Nghĩa địa

Bài gửiTiêu đề: Giải bài các số nguyên tố tương đương   Sun 28 Mar 2010, 11:29

Đề:
Trích dẫn :
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 ttươ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ó.

Hãy viết chương trình kiểm tra 2 số có nguyên tố tương hay không.

Mở rộng với n số nguyên tố tương đương.

Dữ liệu của cả hai bài có thể nhập từ bàn phím hay file đều được.

Bài giải với hai số:

Với dạng này, mình làm kiểu phân tích. Gọi 2 số nhập vào là k và l . Với mọi số i mà k chia hết cho i, ta sẽ rút hết thừa số i trong k ra, đồng thời nếu l chi hết cho i thì ta cũng rút hết thừa số i trong l ra. Ta sẽ tiếp tục như thế cho đến khi k=1. Khi đó nếu l=1 thi hai số k va l nguyên tố tương đương, ngược lại nếu l>1 thì hai số trên không nguyên tố tương đương.

Bài cụ thể:
Code:
program nguyen_to_tuong_duong;
uses crt;
const max=100;
var a:array[1..max] of integer;
    i,n,k,l:integer;

procedure nhap;
 begin
  clrscr;
  write('nhap vao so thu nhat: ');readln(k);
  write('nhap vao so thu hai : ');readln(l);
 end;

procedure tinh;
 begin
  if k>l then begin i:=k; k:=l; l:=i; end;
  i:=2;
  while k<>1 do
  begin
    while k mod i<>0 do inc(i);
    while k mod i=0 do k:=k div i;
    while l mod i=0 do l:=l div i;
  end;
 end;

procedure xuat;
 begin
  if l=1 then writeln('Hai so vua nhap nguyen to tuong duong.')
  else writeln('Hai so vua nhap khong nguyen to tuong duong.');
  readln;
 end;

begin
 nhap;
 tinh;
 xuat;
end.


Được sửa bởi littlelee ngày Sun 28 Mar 2010, 11:50; sửa lần 1.
Về Đầu Trang Go down
littlelee
Admin
Admin


Tổng số bài gửi : 415
Join date : 20/12/2009
Age : 21
Đến từ : Nghĩa địa

Bài gửiTiêu đề: Re: Giải bài các số nguyên tố tương đương   Sun 28 Mar 2010, 11:38

Bài giải với n số:

Giải thuật của mình cũng tương tự ^^.

Bài cụ thể:
Code:
program nguyen_to_tuong_duong;
uses crt;
const max=100;
var a:array[1..max] of integer;
    i,j,n,k:integer;  ok:boolean;

procedure nhap;
 begin
  clrscr;
  write('nhap so phan tu cua day: ');readln(n);
  for i:=1 to n do
  begin
    write('a[',i,']=');readln(a[i]);
  end;
 end;

procedure tinh;
 begin
  k:=a[1];
  for i:=2 to n do if a[i]<k then k:=a[i];
  i:=2;
  while k<>1 do
  begin
    while k mod i<>0 do inc(i);
    while k mod i=0 do k:=k div i;
    for j:=1 to n do
    while a[j] mod i=0 do a[j]:=a[j] div i;
  end;
 end;

procedure xuat;
 begin
  ok:=true;
  for i:=1 to n do
  if a[i]<>1 then begin ok:=false; break; end;
  if ok then writeln('Hai so vua nhap nguyen to tuong duong.')
  else writeln('Hai so vua nhap khong nguyen to tuong duong.');
  readln;
 end;

begin
 nhap;
 tinh;
 xuat;
end.
Về Đầu Trang Go down
 
Giải bài các số nguyên tố tương đương
Xem chủ đề cũ hơn Xem chủ đề mới hơn Về Đầu Trang 
Trang 1 trong tổng số 1 trang
 Similar topics
-
» Rừng Mắm - Bình Nguyên Lộc
» Nguyên liệu và dụng cụ đan len
» Những Giai Thoại về Các Vị Tam Nguyên
» THƠ PHƯƠNG NGUYÊN
» Gánh cải Trạng Nguyên

Permissions in this forum:Bạn không có quyền trả lời bài viết
Diễn đàn tin học Nguyễn Văn Linh :: Góc tin học :: Lớp chuyên tin-
Chuyển đến