Bài 3: Viết chương trình từ bàn phím số nguyên dương n (n<=100) và dãy A gồm n phần tử số nguyên A1, A2……An. a/ Hãy đếm xem trong dãy có bao nhiêu số nguyên tố trong dãy? b/ Hãy tính tổng các số hoàn hảo có mặt trong dãy số? Yêu cầu: Viết chương trình con nhập dãy số A từ bàn phím.

2 câu trả lời

Program Mang;
Uses crt;
Var A: array[1..100000] of longint;
    n, cnt, sum, i: longint;

Function is_Prime(a: longint): boolean;
Var i: longint;
Begin
        If a < 2 then exit(false);
        For i:=2 to trunc(sqrt(a)) do
                If a mod i = 0 then exit(false);
        exit(true);
End;

Function isHH(a: longint): boolean;
Var ans, i: longint;
Begin
        ans := 0;
        For i:=1 to a div 2 do
                If a mod i = 0 then ans := ans + i;
        If ans = a then exit(true);
        exit(false);
End;

Begin
        Clrscr;
        Write('Nhap n: '); Readln(n);
        cnt := 0;
        sum := 0;
        For i:=1 to n do
        Begin
                Write('A[',i,'] = ');
                Readln(A[i]);
                If is_Prime(A[i]) then inc(cnt);
                If isHH(A[i]) then sum := sum + A[i];
        End;

        Writeln('Co ',cnt,' so nguyen to');
        Write('Tong cac so hoan hao la ',sum);

        Readln
End.

uses crt;
var n,i,count,res:longint;
     a:array[1..100]of longint;
function isPrimeNumber(n:longint):boolean;
var i:longint;
begin
    if n<2 then exit(false);
    for i:=2 to trunc(sqrt(n)) do
        if n mod i=0 then exit(false);
    exit(true);
end;
function isPerfectNumber(n:longint):boolean;
var i,res:longint;
begin
    res:=0;
    for i:=1 to n div 2 do
        if n mod i=0 then inc(res,i);
    if res=n then exit(true) else exit(false);
end;
begin
clrscr;
    readln(n);
    for i:=1 to n do
        begin
            readln(a[i]);
            if isPrimeNumber(a[i]) then inc(count);
            if isPerfectNumber(a[i]) then inc(res,a[i]);
        end;
    writeln(count);
    writeln(res);
readln;
end.
//Harry Le

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