construir una funcion que reciba dos numeros enteros positivos y retorne un 1 si estos constituyen un par de numeros amigos y 0 si no lo son.
#include <stdio.h>
int amigos (int , int);
int main(void){
int A, B;
scanf("%d %d", &A, &B);
printf("son amigos si es 1, si es 0 no lo son == %d", amigos(A,B));
}
int amigos (int A , int B) {
int j;
int i;
int contA=0;
int contB=0;
for (i=1; i<1000; i++)
if(A%i==0){
contA = contA + i;
}
for (j=1; i<1000; i++){
if(B%i==0){
contB = contB + i;
}
if (contA==B && contB==A)
return 1;
else return 0;
}
}
el mio retorna el valor ingresado en la variable A
Mod: Usa etiquetas GeSHi para que tu codigo sea legible
No me he parado a comprobar qué son dos números amigos pero en el bucle de la B has mezclado la <i> y la <j>. Seguramente eso esté mal.
Saludos,
- Es lo malo de no planificar bien el algoritmo XD. Y un buen IDE también se da cuenta de cosas extrañas, primero lo formateo con Ctrl + Alt + L ya que si vas evitar poner las llaves para los bucles for tienes que formatear bien tu código usando las identaciones o usar siempre llaves, formateando se puede ver un error de concepto bien feo al final:
(https://i.ibb.co/JKrQ3SP/clion.png)
-- Dice, esa variable
j nunca se usa, esa variable
i++ no tiene sentido, y que es posible que la función termine no devolviendo nada, tu bucle
for está inestable.
- Puedes ver el algoritmo en C++ en este vídeo:
[youtube=640,360]https://youtu.be/HmrH6VaDhHQ[/youtube]
- Yo lo terminaría así:
#include <stdio.h>
int amigos(int, int);
int main(void) {
int A, B;
scanf("%d %d", &A, &B);
printf("son amigos si es 1, si es 0 no lo son == %d", amigos(A, B));
}
int amigos(int A, int B) {
int i;
int j;
int contA = 0;
int contB = 0;
for (i = 1; i <= A / 2; i++)
if (A % i == 0) {
contA = contA + i;
}
for (j = 1; j <= B / 2; j++) {
if (B % j == 0) {
contB = contB + j;
}
}
if (contA == B && contB == A)
return 1;
else return 0;
}
CitarC:\Users\EdSon\CLionProjects\untitled\cmake-build-debug\untitled.exe
220 284
son amigos si es 1, si es 0 no lo son == 1
Process finished with exit code 0