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 }
} p>
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.