Bài tập Pascal

P

p3nh0ctapy3u

[TẶNG BẠN] TRỌN BỘ Bí kíp học tốt 08 môn
Chắc suất Đại học top - Giữ chỗ ngay!!

ĐĂNG BÀI NGAY để cùng trao đổi với các thành viên siêu nhiệt tình & dễ thương trên diễn đàn.

Nhập 2 số bất kì n,m từ bàn phím m nhỏ hơn hoặn bằng n
a,tính tổng các số trogn phạm vi từ m~>n
b, đếm xem từ m~> n có bao nhiêu số chẵn ,lẻ
c,Trong phạm vi từ m~>n có bao nhiêu số chia hết cho 3 và 5
d,trong phạm vi từ m~>n có bao nhiêu số nguyên tố
e,trong phạm vi từ m~>n có bao nhiêu số chính phương
g,trong phạm vi từ m~>n có bao nhiêu số hoàn hảo
 
L

lamdetien36

Nhập 2 số bất kì n,m từ bàn phím m nhỏ hơn hoặn bằng n
a,tính tổng các số trogn phạm vi từ m~>n
b, đếm xem từ m~> n có bao nhiêu số chẵn ,lẻ
c,Trong phạm vi từ m~>n có bao nhiêu số chia hết cho 3 và 5
d,trong phạm vi từ m~>n có bao nhiêu số nguyên tố
e,trong phạm vi từ m~>n có bao nhiêu số chính phương
g,trong phạm vi từ m~>n có bao nhiêu số hoàn hảo
Mã:
var
    M, N, i, c1, c2, c3, c4, c5: integer;
    S: longint;
function SNT(N: integer): boolean;
 var
     i, t: integer;
 begin
     if N < 2 then exit(false);
     t := trunc(sqrt(N));
     for i := 2 to t do
     begin
         if N mod i = 0 then exit(false);
     end;
     SNT := true;
 end;
function SCP(N: integer): boolean;
 var
     t: integer;
 begin
     t := trunc(sqrt(N));
     SCP := (t * t = N);
 end;
function SHH(N: integer): boolean;
 var
     i, t, S: integer;
 begin
     t := trunc(sqrt(N));
     S := 1;
     for i := 2 to t do if N mod i = 0 then
     begin
         S := S + i;
         if N div i <> i then S := S + S div i;
     end;
     SHH := (S = N);
 end;
begin
    writeln('Nhap M, N: '); readln(M, N);
    S := 0; c1 := 0; c2 := 0; c3 := 0; c4 := 0; c5 := 0;
    for i := M to N do
    begin
        S := S + i;
        if i mod 2 = 0 then c1 := c1 + 1;
        if (i mod 3 = 0) and (i mod 5 = 0) then c2 := c2 + 1;
        if SNT(i) then c3 := c3 + 1;
        if SCP(i) then c4 := c4 + 1;
        if SHH(i) then c5 := c5 + 1;
    end;
    
    writeln('Tong Cac So            : ', S);
    writeln('So So Chan             : ', c1);
    writeln('So So Le               : ', N - M + 1 - c1);
    writeln('So So Chia Het Cho 3, 5: ', c2);
    writeln('So So Nguyen To        : ', c3);
    writeln('So So Chinh Phuong     : ', c4);
    writeln('So So Hoan Hao         : ', c5);
    
    readln
end.
Phần số chia hết cho 3, 5 có thể thay điều kiện thành chia hết cho 15 :D
 
L

lamdetien36

Nhập 2 số bất kì n,m từ bàn phím m nhỏ hơn hoặn bằng n
a,tính tổng các số trogn phạm vi từ m~>n
b, đếm xem từ m~> n có bao nhiêu số chẵn ,lẻ
c,Trong phạm vi từ m~>n có bao nhiêu số chia hết cho 3 và 5
d,trong phạm vi từ m~>n có bao nhiêu số nguyên tố
e,trong phạm vi từ m~>n có bao nhiêu số chính phương
g,trong phạm vi từ m~>n có bao nhiêu số hoàn hảo
Nếu tách ra từng bài thì thế này :D
Câu a:
Mã:
var
    N, M, i: integer;
    S: longint;
begin
    writeln('Nhap M, N: '); readln(M, N);
    S := 0;
    for i := M to N do
        S := S + i;
    writeln('Tong Cac So Tu M --> N: ', S);
    readln
end.
Câu b:
Mã:
var
    N, M, i, cnt: integer;
begin
    writeln('Nhap M, N: '); readln(M, N);
    cnt := 0;
    for i := M to N do
    begin
        if i mod 2 = 0 then cnt := cnt + 1;
    end;
    writeln('So Luong So Chan: ', cnt);
    writeln('So Luong So Le  : ', N - M + 1 - cnt);
    readln
end.
Câu c:
Mã:
var
    N, M, i, cnt: integer;
begin
    writeln('Nhap M, N: '); readln(M, N);
    cnt := 0;
    for i := M to N do
    begin
        if (i mod 3 = 0) and (i mod 5 = 0) then cnt := cnt + 1;
    end;
    writeln('So Luong So Chia Het Cho 3, 5: ', cnt);
    readln
end.
Câu d:
Mã:
var
    N, M, i, cnt: integer;
function SNT(N: integer): boolean;
 var
     i, t: integer;
 begin
     if N < 2 then exit(false);
     t := trunc(sqrt(N));
     for i := 2 to t do
     begin
         if N mod i = 0 then exit(false);
     end;
     SNT := true;
 end;
begin
    writeln('Nhap M, N: '); readln(M, N);
    cnt := 0;
    for i := M to N do
    begin
        if SNT(i) then cnt := cnt + 1;
    end;
    writeln('So Luong So Nguyen To: ', cnt);
    readln
end.
Câu e:
Mã:
var
    N, M, i, cnt: integer;
function SCP(N: integer): boolean;
 var
     t: integer;
 begin
     t := trunc(sqrt(N));
     SCP := (t * t = N);
 end;
begin
    writeln('Nhap M, N: '); readln(M, N);
    cnt := 0;
    for i := M to N do
    begin
        if SCP(i) then cnt := cnt + 1;
    end;
    writeln('So Luong So Chinh Phuong: ', cnt);
    readln
end.
Câu g:
Mã:
var
    N, M, i, cnt: integer;
function SHH(N: integer): boolean;
 var
     i, t, S: integer;
 begin
     t := trunc(sqrt(N));
     S := 1;
     for i := 2 to t do if N mod i = 0 then
     begin
         S := S + i;
         if N div i <> i then S := S + S div i;
     end;
     SHH := (S = N);
 end;
begin
    writeln('Nhap M, N: '); readln(M, N);
    cnt := 0;
    for i := M to N do
    begin
        if SHH(i) then cnt := cnt + 1;
    end;
    writeln('So Luong So Hoan Hao: ', cnt);
    readln
end.
 
L

lamdetien36

Không dùng chương trình con của chị đây :D
Câu a, b, c: giữ nguyên như trên :D
Câu d:
Mã:
var
    N, M, i, cnt, j, t: integer;
    c: boolean;
begin
    writeln('Nhap M, N: '); readln(M, N);
    cnt := 0;
    for i := M to N do
    begin
        c := true;
        if i >= 2 then
        begin
            t := trunc(sqrt(i));
            for j := 2 to t do
            begin
                if i mod j = 0 then
                begin
                    c := false;
                    break;
                end;
            end;
            if c then cnt := cnt + 1;
        end;
    end;
    writeln('So Luong So Nguyen To: ', cnt);
    readln
end.
Câu e:
Mã:
var
    N, M, i, cnt: integer;
begin
    writeln('Nhap M, N: '); readln(M, N);
    cnt := 0;
    for i := M to N do
    begin
        if sqr(trunc(sqrt(i))) = i then cnt := cnt + 1;
    end;
    writeln('So Luong So Chinh Phuong: ', cnt);
    readln
end.
Câu g:
Mã:
var
    N, M, i, cnt, j, S, t: integer;
begin
    writeln('Nhap M, N: '); readln(M, N);
    cnt := 0;
    for i := M to N do
    begin
        S := 0; t := trunc(sqrt(i));
        for j := 1 to t do if i mod j = 0 then
        begin
            S := S + j;
            if i div j <> j then S := S + i div j;
        end;
        S := S - i;
        if S = i then 
            cnt := cnt + 1;
    end;
    writeln('So Luong So Hoan Hao: ', cnt);
    readln
end.
 
B

biobaby

Cho em bon chen tí! Anh chị cho em hỏi bài này:
Ba bạn An, Bình và Cường cùng tham gia một trò chơi như sau: Mỗi bạn nắm trong tay một đồng xu, mỗi đồng xu có hai trạng thái : sấp và ngửa. Theo hiệu lệnh, cả ba bạn cùng đưa đồng xu của mình ra phía trước. Nếu cả ba đồng xu cùng sấp hoặc cùng ngửa thì chưa phát hiện người thua cuộc (hòa nhau). Nếu một bạn có trạng thái đồng xu khác với hai bạn kia( nghĩa là đồng xu của bạn ấy sấp còn hai người kia ngửa và ngược lại đồng xu của bạn ấy ngửa thì hai người kia sấp) thì bạn đó thắng cuộc. Hãy viết chương trình mô phỏng trò chơi trên.
Em viết chương trình sau:
uses crt;
Var A, B, C: byte;
Begin
clrscr;
Writeln('Nhan phim bat ki de xem ket qua: ');
A:=Random(10); A:=A mod 2;
B:=Random(10); B:=B mod 2;
C:=Random(10); C:=C mod 2;
Write('a,b,c lan luot la: ',a,b,c);
if (A=B) and (B=C) then Write(' Hoa');
if (A=0) and (B=0) and (C=1) then Write(' C Thang');
if (A=0) and (B=1) and (C=0) then Write(' B Thang');
if (A=0) and (B=1) and (C=1) then Write(' A Thang');
if (A=1) and (B=0) and (C=0) then Write(' A Thang');
if (A=1) and (B=0) and (C=1) then Write(' B Thang');
if (A=1) and (B=1) and (C=0) then Write(' C Thang');
Readln
End.

Tại sao khi in nó cứ cho kết quả:
mà không có kết quả khác như '... thắng' hay '... thua'

Cám ơn.
 
Top Bottom