Descripción del problema:
Hay dos números enteros, si la suma de los divisores de cada número entero (excepto él mismo) es igual entre sí, llamamos amigable al par de números. Por ejemplo:
La suma de los divisores de 9 es: 1 + 3 = 4
La suma de los divisores de 4 es: 1 + 2 = 3,
por lo que 9 y 4 no son amigos.
La suma de los divisores de 220 es: 1 2 4 5 10 11 20 22 44 55 110 =
284 La suma de los divisores de 284 es: 1 2 4 71 142 = 220,
entonces 220 y 284 son amistosos.
Escribe un programa para determinar si dos números son números amigos.
Formato de entrada:
una línea, dos enteros, separados por espacios
Formato de salida:
Si es un número amigable, escriba "sí", en caso contrario, "no", tenga en cuenta que las comillas no están incluidas.
Entrada de muestra:
220284
Salida de muestra:
sí
Escala de datos y convención:
ambos números enteros son menores que 10000
código de referencia del lenguaje c:
#include <stdio.h>
int main()
{
int n,m;
scanf("%d%d",&n,&m);
int i,sum1=0,sum2=0;
for(i=1;i<n;i++)
{
if(n%i==0)
sum1+=i;
}
for(i=1;i<m;i++)
{
if(m%i==0)
sum2+=i;
}
if(sum1==m&&sum2==n)
printf("yes");
else
printf("no");
return 0;
}
código de referencia de Java:
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner sc= new Scanner(System.in);
int n=sc.nextInt();
int m=sc.nextInt();
int sum1=0,sum2=0;
for(int i=1;i<n;i++)
{
if(n%i==0)
sum1+=i;
}
for(int i=1;i<m;i++)
{
if(m%i==0)
sum2+=i;
}
if(sum1==m&&sum2==n)
System.out.println("yes");
else
System.out.println("no");
}
}
Enlace de referencia:
Portal