;

Full width home advertisement

Tutoriales

Programación

Post Page Advertisement [Top]

Este es el enunciado del problema numero 6 del  Project Euler:
The sum of the squares of the first ten natural numbers is,
2 + 22 + … + 102 = 385
The square of the sum of the first ten natural numbers is,
(1 + 2 + … + 10)2 = 552 = 3025
Hence the difference between the sum of the squares of the first ten natural numbers and the square of the sum is 3025 
 385 = 2640.
Find the difference between the sum of the squares of the first one hundred natural numbers and the square of the sum.
El problema es acerca de hallar la sumatoria de los números naturales del 1 hasta el 100 y el total  elevarlo al cuadrado,  mientras,  que se halla la sumatoria de los cuadrados de los números naturales del 1 hasta el 100 obteniendo un segundo total para el final restar ambos totales. 
Primero : hallar la sumatoria de los numero naturales y elevarlo al cuadrado
 (1 + 2 + 3 +…. +99 + 100)^2
Segundo: Hallar la sumatoria del cuadrado de los numeros naturales. 
1^2 + 2^2 + … + 100^2
En  C/ C++  utilizando fuerza bruta:


#include <stdio.h> 
#include <string.h>
#include <conio.h> 
#include <stdlib.h> 
#include <math.h>   


void main (){ 

int suma_cuadrados =0;
int suma_numeros=0; 

// Siendo n la variable que contendra el valor hasta donde queramos que llegue la sumatoria
int n=100; 
for(int i = 1 ; i <= n ; i++){ 

suma_cuadrados +=  (i*i); 

 // la sumatoria de los numeros naturales

 suma_numeros  +=  i;

  }// fin de for
// En la siguiente linea se ejecuta la diferencia

int resultado = ( suma_numeros * suma_numeros ) - sumacuadrados;
 
printf(” %d “, resultado); 

}//main

El problema es acerca de hallar la sumatoria de los números naturales del 1 hasta el 100 y el total elevarlo al cuadrado, mientras, que se halla la sumatoria de los cuadrados de los números naturales del 1 hasta el 100 obteniendo un segundo total para el final restar ambos totales. Primero : hallar la sumatoria de los numero naturales y elevarlo al cuadrado (1 + 2 + 3 +…. +99 + 100)^2 Segundo: Hallar la sumatoria del cuadrado de los numeros naturales. 1^2 + 2^2 + … + 100^2 En C/ C++ utilizando fuerza bruta: Al final el resultado total para los primeros 100 numeros naturales es: 25164150.
// siendo lim el numero hasta donde queremos que llegue la sumatoria
// por la tanto puede ser sustituido por cualquier numero  que deseemos
 int lim= 100; 
 int sum= ( lim * (lim + 1) ) / 2;     // sumatoria de numeros
  int sum_s= ( ( 2*lim +1) * (lim +1) * lim )/ 6; // sumatoria de cuadrados
 // En la siguiente variable se hace  guarda el resultado de la resta.
int resultado = ( sum * sum ) - sum_s ;
// se imprime por pantalla el resultado
printf(” %d “, resultado); 
El algoritmo tan solo esta limitado por el numero que se ingrese, mientras mas grande sea es mejor cambia por otro tipo de dato como por ejemplo: long int, double, longt double etc… Hasta el momento este ha sido el algoritmo mas optimo que he logrado investigar, si tienes mas optimo o quieres compartir tu opinion tan solo escribe.

No hay comentarios:

Publicar un comentario

Bottom Ad [Post Page]

| Designed by Colorlib