Red de conocimiento informático - Problemas con los teléfonos móviles - Qiu Dashen señaló el siguiente error de código para el número de Smith (la suma de los factores primos es igual a la suma de sus dígitos), por qué no se puede generar

Qiu Dashen señaló el siguiente error de código para el número de Smith (la suma de los factores primos es igual a la suma de sus dígitos), por qué no se puede generar

En primer lugar, n1=k%100 debe cambiarse a n1=k/100 para representar el dígito de las centenas, n2=(k/10)%10 para representar el dígito de las decenas y n3=k. %10 para representar el dígito de las unidades. (En su expresión, si k es uno o dos dígitos, entonces obviamente hay un problema con los valores representados por n1, n2 y n3)

Le daré una declaración para encontrar cada dígito La suma :

for(int?k=256,sum=0;k;k/=10)? sum+=x%10;//encontrar la suma de cada dígito de k

Después de encontrar cada dígito, el siguiente paso es factorizar los números. (Los números primos no se pueden factorizar en factores primos y están excluidos)

El siguiente es el código fuente:

public?class?smithnum?{ public?static?void?main(String[] ?argv ){ int?i,j,sum=0,k,n1=0,n2=0, n3=0; System.out.println("SmithNum:"); k++) {

if(isPrime(k))?continue;//isPrime, skip

n1=k/100 ?//Indica centenas

n2=(k/10)%10;?//Indica decenas de dígitos

n3=k%10; ?//Indica un solo dígito

j=k;?/ / temporal k,k no se puede modificar

for(i=2,sum=0;i<=j;i++){// i,la suma correspondiente a k debe restablecerse cada vez

?//La declaración de doble bucle está realizando la factorización prima

while(j%i==0){//Calcalculando la suma de la factorización prima

* if( i>9 )?{

? para(int?m=i;m!=0;m/=10){

?sum+=m%10;

}

?}

? más{

? suma+=i;

?}

? j/=i;

}

}

if(sum==n1+n2+n3){// Compara la suma de factores primos ¿Es ¿igual a la suma de los dígitos? Si es así, salida

System.out.print(k+"? ");

} } } public?// Algoritmo de optimización, no es necesario para calcular i<=k for(i=2;i<=m;i++){

if(k%i==0)?true }

}

El siguiente es el resultado de la operación:

Debido a que la página web reconoce espacios, más de dos espacios se consideran uno, por lo que el formato es un poco desordenado. Puedes copiarlo a. el entorno IDE y depurarlo y ejecutarlo directamente para obtener el resultado correcto. La respuesta y el formato también se pueden ajustar rápidamente directamente usando el IDE.