// // $webw-breve.js.txt // // Calcola, solo per scopo dimostrativo, // quanti numeri primi ci sono fino a $lim. // Devono essere circa $lim/Math.log($lim) // // Se il messaggio postato consiste in una // Array, allora e' un risultato importante // e se invece e' una stringa e' solo una // segnalazione fatta per segnalare che // i calcoli sono in corso, non bloccati. // var $quandoprima=0,$frequenza=2000,$lim=1+1e7; var $passi=0,$ricevuto="Ancora niente"; // // Spedisce sia segnalazioni ( stringhe) // sia risultati importanti in forma di Array. // var $postMessage=function(dati){ var $propost; if(Array.isArray(dati)){ $propost=[$passi+"\u2190 Passi", " Riceve: ",$ricevuto,dati]; $passi++;} else{$propost=" "+dati}; postMessage($propost);} // // Spedisce se e' passato un po' di tempo, // una segnalazione di attivita'. // var $forseva=function(cosa){ var nunc=0,data=new Date(); nunc=data.getTime(); if($frequenza+ $quandoprima>nunc)return false; $postMessage(cosa); $quandoprima=nunc; return true} // // Ecco il calcolo fatto qui solo a scopo // dimostrativo. // var $contaprimi=function(){ var n,kp=2,np,blim,nv,volte=100,fat=4; var inmezzo; var sepr=function(np){var k,nu; if(np%2==0)return false; nu=Math.round(2+Math.sqrt(np)); for(k=3;nu>k;k+=2){if( 1>np%k)return false} return true;}; inmezzo=1+($lim+$lim%2)/2; if(inmezzo%2==0)inmezzo++; blim=fat;np=[" [",0,0,"] ["]; $postMessage(["Ora sta in $contaprimi()"]); nv=1+Math.round($lim/volte); for(n=3;$lim>=n;n+=2){ if(sepr(n))np[kp]++; np[kp-1]=n; if(n>=blim){blim=blim*fat; np[kp+2]=n;np[kp+3]=np[kp]; np[kp+4]="] [";kp+=3;} if(4>n%nv){$forseva( " In $contaprimi sta al numero "+n)} if(n==inmezzo)$postMessage(np);} $postMessage("Amen in $contaprimi()"); np[np.length]="Esce da $contaprimi()" +" al numero"+$lim+"]"; $postMessage(np); return np;} // // Qui definisce il metodo con cui riceve // i comandi dal file HTML. // onmessage=function(eccoqua){ var NN;$ricevuto=eccoqua.data; NN=Math.round(parseFloat($ricevuto)); if(isNaN(NN))return; if(NN>$lim)$lim=1+(NN-NN%2); $ricevuto=NN+" ( "+$ricevuto+" )";} // // Prima di lavorare perde un po' di tempo // per aspettare i messaggi che sono // stati inviati. Altrimenti la onmessage // non riesce a trascrivere i messaggi. // function PerIniziare() { $postMessage(["Ora sono partito!"]); setTimeout("$contaprimi()",1500);} // PerIniziare(); //