Advertisement
Abelsor

S4_Ejercicio_2

Mar 1st, 2023 (edited)
508
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.19 KB | None | 0 0
  1. #include<iostream>
  2. #include<cmath>
  3. using namespace std;
  4.  
  5. /*Función que devuelve el resultado de a^b.
  6. Se supone que b es un número no-negativo.*/
  7. int potencia(int a, int b){
  8.     int i, p=1;
  9.     for(i=0;i<b;i++) p*=a;
  10.     return p;
  11. }
  12.  
  13. /*Función que devuelve true si el número n es primo, y false en caso contrario.
  14. Se supone que n es positivo.*/
  15. bool esPrimo(int n){
  16.     if(n==1) return false;
  17.     int i;
  18.     for(i=2;i<=sqrt(n);i++) if(n%i==0) return false;
  19.     return true;
  20. }
  21.  
  22. /*Función que devuelve la cantidad de dígitos de un número n.
  23. Se supone que n es positivo.*/
  24. int cantDigitos(int n){
  25.     int dig=0;
  26.     while(n>0){
  27.         dig++;
  28.         n/=10;
  29.     }
  30.     return dig;
  31. }
  32.  
  33. /*Función solicitada para el problema planteado.*/
  34. int cantNoPrimos_C_Digitos(int a, int b){
  35.     int cont = 0;
  36.     int aux;
  37.    
  38.     if(b > cantDigitos(a)){
  39.         return -1;
  40.     }
  41.    
  42.     while(a>0){
  43.         aux = a%potencia(10,b);
  44.         if(cantDigitos(aux)==b and !esPrimo(aux)){
  45.             cont++;
  46.         }
  47.         a /= 10;   
  48.     }
  49.    
  50.     return cont;
  51. }
  52.  
  53. /*Función principal*/
  54. int main(){
  55.     int N,C;
  56.     cin>>N>>C;
  57.     cout<<"Cantidad de no-primos de "<<C<<" digitos: "<<cantNoPrimos_C_Digitos(N,C)<<endl;
  58.     return 0;
  59. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement