un număr n se numeşte extraprim dacă atât el cât şi orice număr obţinut prin permutarea

3
Un număr n se numeşte extraprim dacă atât el cât şi orice număr obţinut prin permutarea cifrelor lui n sunt numere prime. De exemplu, numărul 113 este un număr extraprim deoarece 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 valorii parametrului a. Exemplu: pentru a=90 subprogramul va returna valoarea 4, deoarece a=2*32*5 şi 1+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 utile ale subprogramului f, mesajul DA dacă n este un număr extraprim, altfel va afişa mesajul NU. 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; begin s:=0; i:=2; while (i<=a) and (a<>0) do begin nr:=0; while (a mod i=0) and (a<>0) do begin a:=a div i; nr:=nr+1; end;

Upload: mihai-oprea

Post on 23-Oct-2015

511 views

Category:

Documents


7 download

DESCRIPTION

ăr obţinut prin permutarea

TRANSCRIPT

Page 1: Un număr n se numeşte extraprim dacă atât el cât şi orice număr obţinut prin permutarea

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);

Page 2: Un număr n se numeşte extraprim dacă atât el cât şi orice număr obţinut prin permutarea

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.