La idea de los ciclos para el control del programa es cosa tuya ya que es muy sencillo. Con referencia al algoritmo pues también.
Lo puedes resolver con ciclos anidados. La idea es la siguiente
Sea N el número que se quiere averiguar si es medio.
Sea S1 = Sumatorio desde 1 hasta N-1
Sea S2 = Sumatorio desde N+1 hasta m, con m siendo el término que hace que S2 >= S1.
Si S2 = S1, N es medio. Si S2 > S1, N no es medio.
Un poco de código chapuza:
Ahí hago el proceso iterativo para verificar si un número N es medio o no.
En tu caso N varía entre 1 y una MACRO de tamaño máximo, por ejemplo, el tamaño aceptado por la máquina. O usar un while (true) {}, teniendo una variable que recorra los Z+ y de la cual averiguaremos si es medio o no en cada iteración.
Para mejorar el proceso podrías llevar sumas parciales en el proceso...
Aunque el algoritmo de leosansan es mucho más eficiente.
Lo puedes resolver con ciclos anidados. La idea es la siguiente
Sea N el número que se quiere averiguar si es medio.
Sea S1 = Sumatorio desde 1 hasta N-1
Sea S2 = Sumatorio desde N+1 hasta m, con m siendo el término que hace que S2 >= S1.
Si S2 = S1, N es medio. Si S2 > S1, N no es medio.
Un poco de código chapuza:
Código (c) [Seleccionar]
#include <stdio.h>
int main (void) {
int N = 6, i;
int sumaAntecesores = 0; // S1
int sumaPredecesores = 0; // S2
for (i=1; i<N; i++) sumaAntecesores += i;
while (sumaPredecesores < sumaAntecesores) sumaPredecesores += ++N;
printf("%d\n", (sumaAntecesores == sumaPredecesores ? 1 : 0));
return 0;
}
Ahí hago el proceso iterativo para verificar si un número N es medio o no.
En tu caso N varía entre 1 y una MACRO de tamaño máximo, por ejemplo, el tamaño aceptado por la máquina. O usar un while (true) {}, teniendo una variable que recorra los Z+ y de la cual averiguaremos si es medio o no en cada iteración.
Para mejorar el proceso podrías llevar sumas parciales en el proceso...
Aunque el algoritmo de leosansan es mucho más eficiente.