un număr n se numeşte extraprim dacă atât el cât şi orice număr obţinut prin permutarea
DESCRIPTION
ăr obţinut prin permutareaTRANSCRIPT
Un număr n se numeşte extraprim dacă atât el cât şi orice număr obţinut prin permutareacifrelor lui n sunt numere prime. De exemplu, numărul 113 este un număr extraprimdeoarece 113, 311, 131 sunt numere prime.a) Scrieţi definiţia completă a unui subprogram f, cu un parametru, subprogram care:- primeşte prin intermediul parametrului a un număr natural cu cel mult 2 cifre (a>1)- returnează suma exponenţilor divizorilor primi din descompunerea în factori primi a valoriiparametrului a.Exemplu: pentru a=90 subprogramul va returna valoarea 4, deoarece a=2*32*5 şi1+2+1=4. (4p.)b) Scrieţi declarările de variabile şi programul principal Pascal care citeşte de la tastaturăun număr natural n, 2≤n≤99, şi care determină şi afişează pe ecran, folosind apeluri utileale subprogramului f, mesajul DA dacă n este un număr extraprim, altfel va afişa mesajulNU.
type vector=array[1..3] of word;var v,p:vector;
n,m,c,aux:word;extraprim:boolean;
function f(a:word):word;var i,nr,s:word;begins:=0;i:=2;while (i<=a) and (a<>0) do
beginnr:=0;while (a mod i=0) and (a<>0) do
begina:=a div i;nr:=nr+1;end;
if nr<>0 then s:=s+nr else i:=i+1;
end;f:=s;end;
procedure permut(i:word);
var j,l,nr:word;beginif i=c+1 then
beginnr:=0;for l:=1 to c donr:=nr*10+v[p[l]];if f(nr)>1 then
extraprim:=false;
elsebeginp[i]:=i;for j:=1 to i do
beginaux:=p[i];p[i]:=p[j];p[j]:=aux;permut(i+1);aux:=p[i];p[i]:=p[j];p[j]:=aux;end;
end;end;
beginrepeat
write(‘n=’);readln(n);until(n>=2) and (n<=999);m:=n;c:=0;while m<>0 do
beginc:=c+1;v[c]:=m mod 10;m:=m div 10;end;
if (c=3) thenbeginaux:=v[1];v[1]:=v[3];v[3]:=aux;end;
else if (c=2) thenbeginaux:=v[1];v[1]:=v[2];v[2]:=aux;end;
extraprim:=true;permut(1);if extraprim then write(‘DA’)
else write(‘nu’);end.