Secuencia incremental programada
Hablemos primero de matemáticas:
Configuración:
an=a+( n-1) *d? (Aquí d=1)
a1=a
an=a+n-1
sn =(a 1+an)n/2 =( 2a-1+n)/2
Volvamos a este programa:
Nuestros datos de entrada en realidad son sn, por lo que necesitamos encontrar N secuencias crecientes consecutivas comenzando desde A, de modo que la suma es sn.
Aquí podemos juzgar por el ciclo. Dados n y sn conocidos, podemos encontrar a; si a es un número entero positivo, podemos encontrar el primer término de la secuencia aritmética; si se da n, d=1, podemos escribir la suma.
El código es el siguiente:
# include & ltstdio.h & gt
¿No es válido? principal()
{
int? Entrada, I, n, bandera
¿Flotador? a; //El primer elemento de la secuencia aritmética no es necesariamente un número entero.
flag = 0;
Printf("Ingrese el número entero para juzgar: \ n ");
scanf("%d ", & amp input)
for(n = 2; n & lt=entrada; n++)
{
a = (2 *entrada+n-n * n)/( 2.0 * n); //El primer elemento de la búsqueda
if(int(a)= = a &&a>0)//Si es un número entero, cumple con los requisitos.
{
printf("%d=%d ", input, int(a)); // La secuencia de salida es un número entero y A es esencialmente un número entero, por lo que se ve obligado a convertir. El tipo no afecta los resultados.
for(I = 1;i<= n-1;i++)
printf("+%d ",int(a+I)); //Igual diferencia El otro Los elementos de la secuencia también son números enteros. a+i es esencialmente un número entero y es el tipo de carga y descarga.
printf(" \ n ");
flag++; //bandera registra la serie que cumple con los requisitos.
}
}
si(bandera==0)? //La bandera es inicialmente 0. A través del bucle anterior, si existe una existencia satisfactoria, no es 0. Si es 0, significa que no se puede escribir como una secuencia aritmética.
Printf("%d "no se puede expresar como la suma de n enteros positivos consecutivos\n ", entrada);
}