Probleme de informatică
Clasa a IX-a
Elementele de bază C++ (46)
Subprograme predefinite (1)
Fişiere text (2)
Algoritmi elementari (109)
Tablouri unidimensionale (83)
Tablouri bidimensionale (64)
Probleme diverse (13)
Clasa a X-a
Subprograme (funcții) (87)
Şiruri de caractere (49)
Tipul înregistrare (26)
Recursivitate (57)
Alocarea dinamică a memoriei (2)
Liste înlănţuite (25)
Algoritmul lui Lee (1)
Clasa a XI-a
Metoda "Divide et impera" (12)
Metoda Backtracking (85)
Metoda Greedy (6)
Programare dinamică (18)
Grafuri neorientate (37)
Grafuri orientate (38)
Arbori (33)
Clasa a XII-a
Elemente de bază C# (32)
POO în C# (13)
Programare vizuală în C# (11)
Examen de bacalaureat
Competențe digitale
Examen de atestat
Admitere UBB (18)
Un numar n se numeste extraprim daca att el, ct si orice numar obtinut prin permutarea cifrelor lui n, sunt numere prime. De exemplu, numarul 113 este un numar extraprim deoarece 113, 311, 131 sunt numere prime.
a) Scrieti definitia completa a unui subprogram f, cu un parametru, subprogram care:
- primeste prin intermediul parametrului a un numar natural nenul cu cel mult 3 cifre
- returneaza suma tuturor exponentilor din descompunerea n factori primi a valorii
parametrului a.
Exemplu: pentru a=90 subprogramul va returna valoarea 4, deoarece a=2*3^2*5 si 1+2+1=4.
b) Scrieti un program C/C++ care citeste de la tastatura un numar natural n, 2=n=999 si, folosind apeluri utile ale subprogramului f, verifica daca n este un numar extraprim. n caz afirmativ, programul afiseaza pe ecran mesajul DA, n caz contrar afisnd mesajul NU.

#include<iostream>
using namespace std;

int f(int n)
{  int s=0,d=2;
   while(n>1)
     if(n%d==0) { s++;
		  n=n/d;
		}
     else d++;
   return s;
}

int main()
{ int n, x,y,z;
  cin>>n;
  if(n<10) if(f(n)==1) cout<<"da";
	   else cout<<"nu";
  else if(n<100) if(f(n)==1 && f(n%10*10+n/10)==1) cout<<"da";
		 else cout<<"nu";
       else
       {  x=n/100;
	  y=n/10%10;
	  z=n%10;
	  if(f(n)==1 && f(x*100+z*10+y)==1 && f(y*100+x*10+z)==1 &&
	     f(y*100+z*10+x)==1 && f(z*100+x*10+y)==1 && f(z*100+y*10+x)==1)
		cout<<"da";
		else cout<<"nu";
       }
  return 0;
}

15 nov 2018
Site-ul conține 868 de probleme rezolvate
Copyright © 2009-2018 Muresan Vasile Ciprian