elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Recuerda que debes registrarte en el foro para poder participar (preguntar y responder)


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  Ayuda c++
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Ayuda c++  (Leído 1,254 veces)
shanse

Desconectado Desconectado

Mensajes: 3


Ver Perfil
Ayuda c++
« en: 14 Noviembre 2018, 13:18 pm »

Definiremos número primo absoluto a un número primo que las sucesivas sumas de sus dígitos (hasta llegar a un número de un solo dígito) también son números primos. ejemplo:

29 es un número primo
La suma de sus dígitos 2 + 9 = 11 también es un número primo
La suma de los dígitos de 11 1 + 1 = 2 también es un número primo
Por lo tanto, 29 es un número primo absoluto.
Evidentemente los números primos de una sola cifra son todos primeros absolutos.

Queremos el listado secuencial de todos los números primos absolutos entre 2 y el <max> indicado.

INPUT: El máximo valor a testear <max>> 2.

OUTPUT: Secuencia del listado de números primos absolutos.

EJEMPLO:
PRIMEROS ABSOLUTOS
INTRODUCE UN MÁXIMO [> 2]: 100
2 3 5 7 11 23 29 41 43 47 61 83


En línea

prof neurus

Desconectado Desconectado

Mensajes: 8



Ver Perfil
Re: Ayuda c++
« Respuesta #1 en: 1 Abril 2019, 20:38 pm »

#include <iostream>

using namespace std;

bool isPair (int number) {
    return (number % 2 == 0 ? true : false );
}

bool isOdd (int number) {
    return !isPair(number);
}

bool isPrimeNumber (int number) {
    if (number == 2)
        return true;
       
    if (isOdd(number)) {
        for (int i = 3; i < number; i++) {
            if (number % i == 0)
                return false;
        }
        return true;
    }
    else {
        return false;
    }
}

int numberOfDigits (int number) {
    if (number >= 100 && number < 1000)
        return 3;
    if (number >= 10 && number < 100)
        return 2;
    else
        return 1;
}

int sumOfDigits(const int number) {
    int hundred = 0;
    int ten = 0;
    int unity = 0;
   
    if (numberOfDigits(number) > 3) {
        hundred = number / 100;
        ten = (number % 100) / 10;
    }
    else {
        ten = number / 10;
    }
    unity = number % 10;
   
    return (hundred + ten + unity);
}

void minorPrimeNumbersThat (const int NUMBER, int arrayOfPrimeNumbers[]) {
    int index = 0;
    int sum = 0;
   
    for (int i = 2; i <= NUMBER; i++) {
        if (isPrimeNumber(i)) {
            if (numberOfDigits(i) == 1) {
                arrayOfPrimeNumbers[index++] = i;
            }
            else {
                sum = sumOfDigits(i);
                if (isPrimeNumber(sum)) {
                    if (numberOfDigits(sum) == 1) {
                        arrayOfPrimeNumbers[index++] = i;
                    }
                    else {
                        sum = sumOfDigits(sum);
                        if (isPrimeNumber(sum)) {
                            if (numberOfDigits(sum) == 1)
                                arrayOfPrimeNumbers[index++] = i;
                        }
                    }
                }
            }
        }
    }
}

void printNumbers ( int array[], const int LENGTH_ARRAY) {
    for (int i = 0; i < LENGTH_ARRAY; i++)
        cout << array << ", ";
}

int main()
{
    const int NUMBER = 100;
    const int LENGTH_ARRAY = 25;
   
    int arrayOfPrimeNumbers[LENGTH_ARRAY] = {0};
   
    cout << "Absolute Prime Numbers : ";
    printNumbers (arrayOfPrimeNumbers, LENGTH_ARRAY);
    cout << endl;
   
    minorPrimeNumbersThat (NUMBER, arrayOfPrimeNumbers);

    printNumbers (arrayOfPrimeNumbers, LENGTH_ARRAY);
   
    return 0;
}

Tiene sus limitaciones. Espero que te sirva. Saludos


En línea

<Desde las primeras computadoras siempre hubo fantasmas en la máquina. Segmentos aleatorios de código que se agrupan para formar protocolos inesperados. Podría llamarse conducta. Radicales libres que engendran interrogantes de libre albedrío creatividad y hasta la naturaleza de lo que podría ser un alma./>
Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines