¿Puedes escribir un programa para encontrar la suma de las siguientes series 1 + 4 + 7 + 10 + – + n?

No sería difícil

Tienes una suma de secuencia de una función lineal. Cada adición aumenta en 3.

[matemáticas] 1: 1 = 3 * 1–2 [/ matemáticas]

[matemáticas] 2: 4 = 3 * 2–2 [/ matemáticas]

[matemáticas] 3: 7 = 3 * 3–2 [/ matemáticas]

[matemáticas] 4: 10 = 3 * 4–2 [/ matemáticas]

[matemáticas] n: a = 3 * i-2 [/ matemáticas]

Por lo tanto,

[matemáticas] \ sum_ {i = 1} ^ {n} (3 * i-2) [/ matemáticas]

Lo que se vería así en el código:

  para (a = 0, i = 1; i <= n; i ++) {a + = (3 * i-2);  }
 imprimir a;

Mi problema es que reboto de VB, C, php, awk y un par de otros. Cuando estoy esbozando una respuesta, uso una mezcla de sintaxis antes de comenzar a codificar.

Pero use la respuesta de Nikhil Gupta a continuación en su lugar. Resuelve el problema con una ecuación de una línea después de reconocer la secuencia.

¿No crees que sería más fácil resolver esto sin un programa?

[matemáticas] \ displaystyle \ qquad n = -2 + 3m, \ m = \ frac {n + 2} {3} \\ S_n = \ displaystyle \ sum_ {i = 1} ^ {m} -2 + 3k = \ frac {m} {2} \ left (1 + (- 2 + 3m) \ right) \\\\\ begin {align} \ bbox [# dff, 5px, border: 2px solid black] {S_n = \ frac { n + 2} {6} \ left (1 + n \ right)} \ tag * {} \ end {align} [/ math]

Pero, si insistes … (Javascript)

  var n = parseInt (window.prompt ("Ingrese el último número para sumar a:", 100));
 var sn = (n + 2) * (n + 1) / 6;
 console.log ("La suma es" + sn);

Solo por diversión, aquí está lo mismo en Befunge (no probado)

  v>, vv, <                         
 > 0 ": ot mus ot rebmun tsal eht tupnI">: |
             |: <"La suma es" 0/6 * + 2 \ +1: & <
          @. $ <

La suma de una serie aritmética es el promedio del primer y último término, multiplicado por el número de términos.

El promedio del primer y último término es fácil, [matemática] (n + 1) / 2 [/ matemática]

Para el número de términos, si el último término es 1, hay 1 término. Si el último término es 4, hay 2 términos, si el último término es 7, hay 3 términos, etc., esto se puede representar con una función lineal. [matemáticas] (n + 2) / 3 [/ matemáticas]

Ahora multiplicamos esos 2.

[matemáticas] \ dfrac {(n + 1) (n + 2)} {6} [/ matemáticas]

Esto supone que n podría ser un término válido en la serie. Si puede ser un número que no es un término válido en la serie, entonces podría hacer algo como esto:

[matemáticas] a = \ left \ lfloor \ dfrac {n-1} {3} \ right \ rfloor \ cdot 3 + 1 [/ math]

sum = [matemáticas] \ dfrac {(a + 1) (a + 2)} {6} [/ matemáticas]

La variable [matemática] a [/ matemática] representa el redondeo hacia abajo [matemática] n [/ matemática] al último término válido antes o igual a [matemática] n [/ matemática].

[math] \ lfloor x \ rfloor [/ math] es la función de piso, que redondea hacia abajo [math] x [/ math] al mayor entero menor o igual que [math] x [/ math]. Si [math] n [/ math] es un término válido, entonces [math] a [/ math] sería igual a [math] n [/ math]. De lo contrario, [matemática] a [/ matemática] sería el término válido más cercano debajo de [matemática] n [/ matemática].

Si [math] n <1 [/ math], entonces la salida debería ser 0 imo.

Todo lo que quedaría es interpretar esa información en un programa, esto sería mucho más eficiente que un bucle.

1 + 4 + 7 + 10 +….

Está claro que la serie anterior es una serie AP con un (primer término) = 1 y

d (diferencia común) = 3

Suma de n elementos de serie = n * (2a + (n-1) * d) / 2

Puede aplicar esta fórmula directamente y obtendrá el resultado en O (1) tiempo donde, como si aplicara un ciclo, la complejidad del tiempo irá a O (n) innecesariamente.

Básicamente, resume todos los números naturales, pero multiplica cada uno por 3 y resta dos. Entonces tenemos (n + 2) / 3 sumandos diferentes en esta suma, cada uno de los cuales es 3x + 2, con x aumentando en 1 en cada paso.

Ahora, pensemos de manera inteligente: la fórmula del “pequeño gauß” para la suma de todos los números naturales del 1 al n es (n² + 1) / 2. Si cada número fuera tres veces mayor, sería 3 (n² + n) / 2. Ahora, dado que tenemos que restar 2 para cada uno de los n términos, obtenemos 3 (n² + n) / 2 – 2n, o (3n² – n) / 2. Ahora, como sumamos hasta (x-2) / 3, usamos eso como n, y obtenemos x² / 6 + x / 2 + 1/3. No hay necesidad de un programa.

Prueba por ejemplo (no una prueba real):

1 + 4 + 7 + 10 + 13 + 16 = 51

16² / 6 + 16/2 + 1/3 = 42.p6 + 8 + 0.p3 = 51.

Si su lenguaje de programación no tiene una función pow () simplemente use n * n.