Số đặc biệt là số khi viết từ phải sang trái là một số nguyên tố. Ví dụ: Số 13 khi viết từ phải sang trái là 31 và 31 là số nguyên tố. Nên số 13 là số đặc biệt. Yêu cầu: Viết chương trình nhập n số nguyên từ bàn phím (n>=2). a. In ra màn hình các số đặc biệt trong dãy. b. Đếm có bao nhiêu số đặc biệt trong dãy. c. Tính tổng các số đặc biệt. Ví dụ: Dữ liệu vào Nhập n = 5 A1=13 A2=32 A3=24 A4=16 A5=52 Dữ liệu ra Cac so dac biet cua day: 13 32 16 Co 3 so dac biet trong day Tong cac so dac biet la: 61

2 câu trả lời

uses crt;
const lim = trunc(1e6);
var n, i, cnt, res, x: longint;
    a: array[1..lim] of longint;
    p: array[0..lim] of boolean;

procedure sieve(n: longint);
var i, j: longint;
begin
    p[0]:=true; p[1]:=true;
    for i:=2 to trunc(sqrt(n)) do 
        if not p[i] then 
            for j:=i to n div i do p[i * j]:=true;
end;

function reverse(n: longint): longint;
var s, st: string;
    i: longint;
    tmp: longint;
begin
    s:=''; st:='';
    str(n, s);
    for i:=length(s) downto 1 do st:=st + s[i];
    val(st, tmp);
    exit(tmp);
end;

begin
clrscr;
    sieve(lim);

    write('Nhap n = '); readln(n);
    for i:=1 to n do 
        begin
            write('A', i, '='); readln(x);
            a[i]:=reverse(x);
            if not p[reverse(x)] then
                begin
                    inc(cnt);
                    inc(res, x);
                end;
        end;

    write('Cac so dac biet cua day: ');
    for i:=1 to n do 
        if not p[a[i]] then write(reverse(a[i]), ' ');

    writeln(#13#10, 'Co ', cnt, ' so dac biet trong day');
    writeln('Tong cac so dac biet la: ', res);
readln;
end.

Mình gưi bài:

Var A:Array[0..1000] Of Longint;
    i,j,n,d,m,dem:Longint;
Function DN(a:Longint):Longint;
 Begin
  DN:=0;
  While a<>0 do
   Begin
    DN:=DN*10+a mod 10;
    a:=a div 10;
   End;
 End;
Function KT(n:Longint):Boolean;
  Var i:Longint;
   Begin
    If (n=2) or (n=3) then Exit(True);
    If (n mod 2=0) or (n mod 3=0) or (n<2) then Exit(False);
    i:=5;
    While Sqr(i)<=n do
     Begin
      If (n mod i = 0 ) or (n mod (i+2) = 0) then Exit(False);i:=i+6;
     End;
    Exit(True);
   End;
 Begin
  Readln(n);
  m:=1;
  For i:=1 to n do
   Begin
    Write('A',i,'=');Readln(d);
    If KT(DN(d)) then
     Begin
      A[m]:=d; m:=m+1; dem:=dem+d;
     End;
   End;
  Write('Cac so dac bien cua day ');For i:=1 to m-1 do Write(A[i],' '); Writeln;
  Writeln('Co ',m-1,' so dac biet trong day');
  Write('Tong cac so dac biet la: ',dem);
 Readln;
 End.

Câu hỏi trong lớp Xem thêm