lunes, 16 de marzo de 2015

ALGORITMO # 1

PRACTICA # 2  SUMA EREW

#Primer Intento
import math

def SumaSec(n):
    nSuma=0  
    for i in range (1,n+1):
        nSuma=nSuma+i    
    return nSuma

print '\t\t----- Suma de n Numeros 1+2+3+...+n ------\n'
n=int(raw_input('Teclea el valor de n -> '))
s=SumaSec(n)
print 'La suma es ->', s

//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

#Segundo Intento
import math

def SumaSecVec(n):
    nSuma=0
    V=[]
    r=int(raw_input('Indica la cantidad de Numeros a Ingresar: '))
    i=1
    while (i<=r):
        n=int(raw_input('Teclea Numero -> '))
        V.append(n)
        i+=1
    for i in range (1,n+1):
        nSuma=nSuma+V[i-1]
    return nSuma

print ' \t\t----- Suma de n Numeros 1+2+3+...+n ------\n'
n= ()
s=SumaSecVec(n)
print '\nLa Suma es -> ' ,s

//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

#Suma Secuencial

import math
def hilo(i,j):
    if((2*j % 2**i) == 0):
        a[int(2*j)] = a[int(2*j)] + a[int(2*j - 2**(i-1))]

a = [0,1,1,1,1,1,1,1,1]
n = len(a)
lg = int(math.log(n,2))
print a
i = 1
while(i<=lg):
    j=1
    while(j<=n/2):
        hilo(i,j)
        j = j+1
    print a
    i=i+1

//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
#Suma Secuencial (threading)
import math

from threading import Thread

def hilo(i,j):
    if((2*j % 2**i) == 0):
        a[int(2*j)] = a[int(2*j)] + a[int(2*j - 2**(i-1))]

a = [0,1,1,1,1,1,1,1,1]
n = len(a)
lg = int(math.log(n,2))
print a
i = 1
while(i<=lg):
    j=1
    while(j<=n/2):
        t = Thread(target=hilo, args=(i,j))
        t.start()
        t.join()
        j = j+1
    print a
    i=i+1











No hay comentarios:

Publicar un comentario