C/Visual C - Numero Perfecto

 
Vista:
sin imagen de perfil

Numero Perfecto

Publicado por Michelle (1 intervención) el 09/03/2016 11:47:38
Hola!! Estoy aprendiendo a programar en C, tengo una duda y me gustaria saber si me pueden ayuda con lo siguiente:necesito hacer un programa que determine si un numero es perfecto y que me saque por pantalla todos los numeros perfectos menores a el.

Mi problema es la segunda parte, no se como hacer que me de los numeros perfectos menores a el.

Esto es lo que he hecho:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
#include <stdio.h>
 
int main(void){
	int n, x, suma=0, resto;
	printf("Numero");
	scanf("%i", &n);
	x=n-1;
	while (x>0){
		resto=n%x;
		if (resto!=0){
			x=x-1;
		}
		else{
			suma=suma+x;
			x=x-1;
		}
	}
	if(suma==n){
	printf("El numero %i es perfecto y la suma da %i", n, suma);
	}
	else {
	printf("El numero %i NO es perfecto y la suma da %i", n, suma);
	}
return 0;
}

Que debo hacer para obtener los numeros perfectos menores?

Gracias de antemano.
Saludos!!
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

Numero Perfecto

Publicado por Tom (619 intervenciones) el 09/03/2016 12:02:30
Tú no tienes una duda, lo que ocurre es que no sabes cómo hacerlo (y no es lo mismo) :)

Básicamente lo que tienes que hacer es ir comprobando si cada número menor que el inicial es perfecto.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Numero Perfecto

Publicado por dario (13 intervenciones) el 11/03/2016 05:24:13
Esta es una ayuda. Tu termina lo demas.
Saludos.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#include <stdio.h>
 
int main() {
 
	int num,i;
 
	printf("Ingrese un numero: ");
	scanf("%d",&num);
 
	for (i=1; i<=num-1; i++) {
		if (num % i == 0)
			printf("%d ",i);
	}
 
	getchar(); getchar();
 
	return 0;
}
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Numero Perfecto

Publicado por Ramón (6 intervenciones) el 27/03/2016 11:17:32
Eso mismo haría yo
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Numero Perfecto

Publicado por Ramón (6 intervenciones) el 27/03/2016 11:16:07
Que curioso, justo ayer eliminé un programa que determinaba los números perfectos que había en un rango determinado desde "a" hasta "b". Como sea, tu programa funciona para determinar si un número es perfecto y te da la suma de sus divisores. Te recomiendo utilizar un ciclo "for" para reducir tu programa (porque es muy largo), otra cosa que haría es llamar a una función aparte que determine si un número es perfecto e ir calando número a número hasta llegar a "n" (si lo que quieres es los números perfectos menores a "n"). Si bien el siguiente ejemplo (solución) no me agrada del todo, trato de mantener la esencia de tu programa. Yo utilizaría un solo ciclo (for) en la función.
Aquí va:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
#include <stdio.h>
 
int perfecto(int n);
 
int main(){
	int n;
	printf("Numero");
	scanf("%i", &n);
 
	int i;
	for(i=1; i<n; i++){
		if(perfecto(i)==i){
			printf("El numero %i es perfecto\n", i);
			}
		}
	return 0;
	}
int perfecto(int n){
	int x = n-1;
	int suma = 0;
	int resto;
	while (x>0){
		resto=n%x;
		if (resto!=0){
			x=x-1;
			}
		else{
			suma=suma+x;
			x=x-1;
			}
		}
	return suma;
	}
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar