Determinar el número de Smith

Descripción Asunto:

  Se refiere a un número entero Smith satisface descomponibles las siguientes condiciones:

  Digital e igual al número de factores primos en su totalidad y en todos sus bits.

  Por ejemplo, 9975 es el número Smith, 9975 = 3 * 5 * 5 * 7 * 19, es decir, la suma digital de la digital = 9975 y el Factor = 30.

  Nota al margen: De acuerdo con la definición del herrero, no es un número primo Smith.
Introducir varios conjuntos de datos, el número de entradas para determinar si el número de Smith, si la salida Sí, de lo contrario la salida n

 

Ideas resolución de problemas: el número n es la entrada de reset

(1) obtiene primero la suma de n bits cada uno, esto es muy simple, no repetición

factor primordial (2) el número de entrada necesaria (tanto divisible por n, y es un número primo), a tener en cuenta es que el factor de calidad de la duplicación, el código idea detallada.

(3) factores cualitativos y se calcula el número de miembros. (Nota: El factor de calidad que también está buscando y oh!)

(4) la determinación de la suma de los respectivos dígitos y el número de factor de calidad y que son iguales.

 

#include <la iostream> 
#include <algoritmo> el uso de espacio de nombres STD; / * determinar si un número es un número primo * / BOOL la esPrimo ( int n-) {
     IF (n - <= . 3 ) {
         retorno n-> . 1 ; 
    } // raíz cuadrada, Nota que sqrt () el tipo de tipo de parámetro doble, aquí para fundición m, int K = ( int ) sqrt (( doble ) n-);
     int I;
     para (i = 2 ; I <= K; I ++ ) {
         IF ( I ==% n- 0 ) {
             retorno

 



    
     false ; 
        } 
    } 
    // si completa todos los ciclos, ym es un número primo, entonces 
    volver  a la verdadera ; 
} 

/ * encontrar un solo dígito y * / 
int sumgewei ( int NUM) {
     int SumG = 0 ; // se suma de 
    ese tiempo (NUM) { 
        SumG +% NUM = 10 ; // calcula para cada uno y 
        NUM = NUM / 10 ; 
    } 
    regreso SumG; 
} 

int main () {
     int n-;
     el tiempo (scanf_s ( " % D ", Y N)) {
         SI (el esPrimo (n)) {
             // número primo no smith 
            printf ( " n " ); 
        } 
        else {
             int SumG sumgewei = (n-); // usted resume n- 
            int sumidero = 0 ; / / calidad suma factor de 
            para ( int I = 2 ; I <= N-;) {
                 IF ((n-I% == 0 ) && la esPrimo (I)) { 
                    sumidero + = sumgewei (I); 
                    n- = n- / I;
                } 
                Else {
                     // porque para encontrar un divisor obtenido después de mirar factores primos de los factores primos, sino que también se inicia desde i = 2
                     // I ++; solamente resuelve el problema aquí, que también proporciona el divisor se ha descrito anteriormente cíclica 
                    I ++ ; 
                } 
            } 
            SI (SumG == sumidero) { 
                printf ( " " ); 
            } 
            else { 
                printf ( " n " ); 
            } 
        } 
    } 

    Sistema ( " PAUSA " );
     retorno  0  ;
}

 

Supongo que te gusta

Origin www.cnblogs.com/syq816/p/12555849.html
Recomendado
Clasificación