Xét tập tất cả các phân số tối giản nằm trong đoạn từ 0 đến 1, với mẫu số là số nguyên dương nhỏ hơn hoặc N và tử số là các số nguyên không âm.
Ví dụ, với N = 5 thì tập này gồm các phân số sau: 0/1, 1/5, 1/4, 1/3, 2/5, 1/2, 3/5, 2/3, 3/4, 4/5, 1/1
Bạn hãy viết một chương trình, cho trước một số nguyên N ghi ra các phân số theo thứ tự tăng.
Dữ liệu: File vào gồm một dòng chứa đúng một số nguyên N.
Kết quả: File ra chứa tất cả các phân số theo thứ tự tăng, mỗi phân số ghi trên một dòng theo định dạng xem trong ví dụ dưới đây.
Ví dụ:
frac.In frac.out
5 0/1
1/5
1/4
1/3
2/5
1/2
3/5
2/3
3/4
4/5
1/1
Lời giải tham khảo
uses crt;
var
n,a,b,i,j,r: integer;
begin
clrscr;
writeln('Nhap so nguyen duong n: ');readln(n);
writeln(0,'/',1);
if n>=1 then writeln(1,'/',1);
for i:=1 to n do
for j:=n downto 1 do
begin
b:=i; a:=j;
repeat
r:=a mod b;
a:=b;
b:=r;
until b=0;
if (a=1)and(i<j) then writeln(i,'/',j);
end;
readln;
end.
No comments:
Post a Comment
Cảm ơn bạn đã nhận xét