okmen910
17-02-2008, 10:12
hai số được gọi là cùng nguyên tố tương đương là hai số có cùng ước số nguyên tố với nhau. Yêu cầu nhập một số N, tìm số nhỏ nhất và cùng nguyên tố tương đương vói N
đây là bài giải của em nhưng em thấy nó dài dòng quá, nếu ai có cách khác thì giúp em
uses crt;
var n,i:integer;
{-----------------}
{------------------}
function ngto(n:integer):boolean;
var i:integer;
begin
i:=2;
while (n mod i<>0) and (n>i) do inc(i);
if n=i then ngto:=true
else ngto:=false;
end;
procedure chuongtrinh(var i,n:integer);
var so,k,dem:integer;
begin
i:=4;
dem:=0;
if (n<4) or (ngto(n)) then exit;
while i<>n do
begin
so:=n;
repeat
k:=2;
while (so mod k<>0) and (so>k) do inc(k);
if (i mod k=0) and (so>k) then inc(dem);
so:=so div k;
until (so=0) or (so=1);
if i=n-1 then i:=n;
if dem=0 then inc(i)
else exit;
end;
end;
{-----------------}
begin
clrscr;
write('Nhap n:');readln(n);
chuongtrinh(i,n);
if (n>3) and (not(ngto(n))) then
writeln(i,' la so nho nhat va cung nguyen to tuong duong voi ',n)
else writeln('khong co so nao cung nguyen to tuong duong voi ',n);
readln;
end.
<<cảm ơn các anh chị nhiều>>
đây là bài giải của em nhưng em thấy nó dài dòng quá, nếu ai có cách khác thì giúp em
uses crt;
var n,i:integer;
{-----------------}
{------------------}
function ngto(n:integer):boolean;
var i:integer;
begin
i:=2;
while (n mod i<>0) and (n>i) do inc(i);
if n=i then ngto:=true
else ngto:=false;
end;
procedure chuongtrinh(var i,n:integer);
var so,k,dem:integer;
begin
i:=4;
dem:=0;
if (n<4) or (ngto(n)) then exit;
while i<>n do
begin
so:=n;
repeat
k:=2;
while (so mod k<>0) and (so>k) do inc(k);
if (i mod k=0) and (so>k) then inc(dem);
so:=so div k;
until (so=0) or (so=1);
if i=n-1 then i:=n;
if dem=0 then inc(i)
else exit;
end;
end;
{-----------------}
begin
clrscr;
write('Nhap n:');readln(n);
chuongtrinh(i,n);
if (n>3) and (not(ngto(n))) then
writeln(i,' la so nho nhat va cung nguyen to tuong duong voi ',n)
else writeln('khong co so nao cung nguyen to tuong duong voi ',n);
readln;
end.
<<cảm ơn các anh chị nhiều>>