"""Programa creado por Marcos Ochoa Diez para calcular los numeros primos que hay entre 0 y 36607 y pintar puntos en la pantalla del movil con los pixels que sean numeros primos, y grabar el resultado en e:\images\snap""" import math, time import appuifw import e32 import graphics from random import randint appuifw.app.title=u"^MvIiIaX^ Primos Pantalla" appuifw.note(u"Bienvenid@ Al Programa ^MvIiIaX^ Primos Pantalla. Espera Un Momento...", "info" ) vector= [0] * 4792 def _raw_input( txt ): return appuifw.query( unicode( txt ), "text" ) def tiempo(n): HOR=n/3600 MIN=(n /60)%60 SEG= n % 60 return (str(HOR)+":"+str(MIN)+":"+str(SEG)) def is_prime2( n ): j = int( round( math.sqrt( n ) ) ) for i in xrange(3, j+1, 2): if (n % i) == 0: return False return True def is_prime( n ): raiz = int( round( math.sqrt( n ) ) ) loco=0 while (n % vector[loco]!=0 and vector[loco]<=raiz):loco+=1 if vector[loco]>raiz: return True else: return False ole=0 for mm in xrange(3,46350,2): if is_prime2( mm ): vector[ole]=mm ole +=1 cuenta = 0 app=appuifw.app app.screen='full' c = appuifw.Canvas() appuifw.app.body=c draw = graphics.Draw(c) c.rectangle((0,0,176,208), fill = 0x000000) start_t=time.time() while cuenta<>3882: e32.ao_yield() num1=randint(0,176) num2=randint(0,208) while num1 %2==0 and num2 %2==0: num1=randint(0,176) num2=randint(0,208) resul=num1*num2 if is_prime(resul): color=(randint(0,255),randint(0,255),randint(0,255)) cuenta+=1 c.point((num1,num2),color) imm = graphics.screenshot() imm.save(u"e:\\images\\snap\\PrimosPantalla.jpg") restita=time.time()-start_t print "\nTmp. Transcurrido. "+tiempo(int(restita))+" Total Primos. "+str(cuenta) print "\nPrimos Seg. "+ str(cuenta/int(restita)) print "\n^MvIiIaX^ Corp. 2006" appuifw.note(u"Todos Los Cálculos Han Sido Realizados Correctamente :)", "info" )