Diễn đàn tin học Nguyễn Văn Linh
Bạn có muốn phản ứng với tin nhắn này? Vui lòng đăng ký diễn đàn trong một vài cú nhấp chuột hoặc đăng nhập để tiếp tục.

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

The second house for every one
 
Trang ChínhLatest imagesTìm kiếmĐăng kýĐăng Nhập

 

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

Go down 
Tác giảThông điệp
littlelee
Admin
Admin
littlelee


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

Giải bài các số nguyên tố tương đương Empty
Bài gửiTiêu đề: Giải bài các số nguyên tố tương đương   Giải bài các số nguyên tố tương đương I_icon_minitimeSun 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
littlelee


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

Giải bài các số nguyên tố tương đương Empty
Bài gửiTiêu đề: Re: Giải bài các số nguyên tố tương đương   Giải bài các số nguyên tố tương đương I_icon_minitimeSun 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
Về Đầu Trang 
Trang 1 trong tổng số 1 trang
 Similar topics
-
» Các số nguyên tố tương đương
» Giải bài số siêu nguyên tố
» thông đường
» giải hộ vài bài
» Bài tập pascal về tệp cần giải gấp!!!

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