Nhập vào hai số x,y.Hãy đếm xem trong khoảng từ x đến y có bao nhiêu số nguyên tố mà tổng các chữ số chia hết cho 3

Nhập vào hai số x,y.Hãy đếm xem trong khoảng từ x đến y có bao nhiêu số nguyên tố mà tổng các chữ số chia hết cho 3

0 bình luận về “Nhập vào hai số x,y.Hãy đếm xem trong khoảng từ x đến y có bao nhiêu số nguyên tố mà tổng các chữ số chia hết cho 3”

  1. Có tính chất: chỉ những số có tổng các chữ số chia hết cho 3 thì nó mới chia hết cho 3 và ngược lại. Nên mình làm 2 bản:

    Bản 1: Đầy đủ theo đề:

    uses crt;
    var x,y,i,d:longint;
    function nt(a:longint):boolean;
    var i:longint;
    begin
       i:=2;
       while(a>1)and(a mod i<>0)do inc(i);
       nt:=i=a;
    end;
    function tong(a:longint):longint;
    begin
       tong:=0;
       repeat
          inc(tong,a mod 10);
          a:=a div 10;
       until a=0;
    end;
    begin
    clrscr;
       write(‘Nhap x,y: ‘);readln(x,y);
       for i:=x to y do
          if (nt(i))and(tong(i) mod 3=0) then
             inc(d);
       writeln(‘Ket qua: ‘,d);
    readln
    end.

    Bản 2: Không cần tính tổng (rút gọn theo tính chất):

    uses crt;
    var x,y,i,d:longint;
    function nt(a:longint):boolean;
    var i:longint;
    begin
       i:=2;
       while(a>1)and(a mod i<>0)do inc(i);
       nt:=i=a;
    end;
    begin
    clrscr;
       write(‘Nhap x,y: ‘);readln(x,y);
       for i:=x to y do
          if (nt(i))and(i mod 3=0) then
             inc(d);
       writeln(‘Ket qua: ‘,d);
    readln
    end.

    Bình luận
  2. uses crt;
    var x,y,i,d:longint;
    function nt(n:longint):boolean;
    var i:longint;
    begin
       nt:=true;
       for i:=2 to trunc(sqrt(n)) do 
          if n mod i=0 then nt:=false;
    end;
    function s(n:longint):longint;
    begin
       s:=0;
       while n<>0 do 
          begin
             inc(s,n mod 10);
             n:=n div 10;
          end;
    end;
    begin
       clrscr;
       write(‘Nhap x,y: ‘); readln(x,y);
       for i:=x to y do 
          if (nt(i)) and (s(i) mod 3=0) then inc(d);
       writeln(‘Co ‘,d,’ so nguyen to ma tong cac chu so chia het cho 3′);
       readln
    end.

    Bình luận

Viết một bình luận