Visualizzazione dei risultati da 1 a 4 su 4
  1. #1

    [javascript] crivello di eratostene

    Ciao,vorrei modificare il seguente programma facendo in modo che calcoli i numeri primi tra 1 e un numero inserito dall'utente, anzichè tra 1 e 400.
    codice:
     <html lang=it-x-mtfrom-en><head><script>(function(){function ti_a(b){this.t={};this.tick=function(b,c,a){a=void 0!=a?a:(new Date).getTime();this.t[b]=[a,c]};this.tick("start",null,b)}var ti_b=new ti_a;window.jstiming={Timer:ti_a,load:ti_b};try{var ti_=null;window.chrome&&window.chrome.csi&&(ti_=Math.floor(window.chrome.csi().pageT));null==ti_&&window.gtbExternal&&(ti_=window.gtbExternal.pageT());null==ti_&&window.external&&(ti_=window.external.pageT);ti_&&(window.jstiming.pt=ti_)}catch(ti_c){};})()
    
    function onClickHandler() {
        primes = [2];
        var n = parseInt( document.getElementById("endN").value );
        if(isNaN(n)) {
           alert("Is not a number!");
           return 0;
        }
    return n;
        }
    
    var zeilz=20; var spaltz=20;
    var a= new Array(zeilz+1);
    for(i=1; i<=zeilz; i++){a[i]= new Array(spaltz+1)};
    var ze=1; var sp=1; var max=zeilz*spaltz; var et=1; var lauf=1; var inh=1; var autosel=0;
    var mhb=''; var tx1=mhb; var tx2=mhb;
    var loeschzahl=0; var verzoe=1; var dauer=6; var timer; var stehen=0;
    var brow='ie'; if(navigator.appName=='Netscape'){brow='ns'};
    
    
    
    function rbuend(x)
    {var zkt=''; zkt=String(x);
     if (x<100){zkt=' '+zkt}; if(x<10){zkt=' '+zkt}; return(zkt)}
    
    function tuwas()
    {var x=0; for(i=1; i<=zeilz; i++){for(j=1; j<=spaltz; j++){x=spaltz*(i-1)+j; a[i][j]=rbuend(x)}};
     if(brow=='ie'){mhb=document.all.tags("a")[10].innerText}} 
    
    function al1(){if (mhb!=tx1){document.write(tx2)}}
    
    function zeigen(i,j)
    {var k=spaltz*(i-1)+j-1; document.arr.elements[k].value=a[i][j]; document.arr.elements[k].style.color="#008800";
     if(a[i][j]==''){document.arr.elements[k].value=String(k+1);
     document.getElementById(String(20*(i-1)+j)).style.color="#cacaf2"}}               
    
    function alleszeigen()
    {for(i=1; i<=zeilz; i++){for(j=1; j<=spaltz; j++){zeigen(i,j)}}}
    
    function ent(x,vz)
    {var as=''; var y=0; var yy=''; for(i=1; i<=x.length; i++)
     {y=x.charCodeAt(i-1)+vz*((max+1)%i)+vz*10; as=as+String.fromCharCode(y); yy=yy+String(y)+','};
     return as}
    
    function anfangen()
    {for(i=1; i<=zeilz; i++){for(j=1; j<=spaltz; j++){a[i][j]=''}};
     tuwas(); alleszeigen(); if (brow=='ie'){al1()}}
    
    function zsber(x)
    {sp=x%spaltz; if(sp==0){sp=spaltz};
     ze=1+Math.round((x-sp)/zeilz+0.01)}
    
    function verzoeber()
    {loeschzahl=0;
     if (2*et<=max){for(i=1; (i+1)*et<=max; i++){inh=(i+1)*et; zsber(inh); if (a[ze][sp]!=''){loeschzahl=loeschzahl+1}}};
     if (loeschzahl==0){verzoe=1}else{verzoe=1000*dauer/loeschzahl}}
    
    function roeteln()
    {clearTimeout(timer);
     var k=1; var allrot=1; var col; while(k<spaltz&&allrot==1){k=k+1; col=document.getElementById(String(k)).style.color; 
     /* alert(k); alert(String(col));*/ if(a[1][k]!=''&&col!="#f00000"&&String(col)!='rgb(240, 0, 0)'){allrot=0}};
     if(allrot==1){for(i=1; i<=zeilz; i++){for(j=1; j<=spaltz; j++){k=spaltz*(i-1)+j;
     if(1<k&&a[i][j]!=''){document.getElementById(String(k)).style.color="#f00000"}}}}}
    
    function schleife()
    {clearTimeout(timer); autosel=0; stehen=0; a[ze][sp]=''; zeigen(ze,sp); inh=(lauf+1)*et;
     while(inh<=max&&stehen==0){zsber(inh); if(a[ze][sp]!=''){stehen=1}else{lauf=lauf+1; inh=(lauf+1)*et}};
     if(stehen==1){autosel=1; document.arr.elements[inh-1].focus(); document.arr.elements[inh-1].select(); timer=setTimeout("schleife()",verzoe)}
     else{timer=setTimeout("roeteln()",1)}}
    
    tx1=String.fromCharCode(82,57,78,57,43,92,113,132,116,125); tx1=ent(tx1,-1);
    tx2=String.fromCharCode(77,122,124,132,125,120,115,115,131); tx2=ent(tx2,-1);
    
    function Clack(p,q)
    {et=parseInt(a[p][q]); verzoeber();
     if (2*et<=max){lauf=1; stehen=0; inh=(lauf+1)*et; document.getElementById(String(et)).style.color="#f00000";
     while(inh<=max&&stehen==0){zsber(inh); if(a[ze][sp]!=''){stehen=1}else{lauf=lauf+1; inh=(lauf+1)*et}}};
     if(stehen==1){autosel=1; document.arr.elements[inh-1].focus(); document.arr.elements[inh-1].select(); timer=setTimeout("schleife()",verzoe)}
     else{timer=setTimeout("roeteln()",1)}}
    
    function Clk(p,q){if (autosel==0&&a[p][q]!='') {Clack(p,q)}}
    
    </script>
    </head>
    <body onLoad=anfangen() bgcolor=#c0d0ff><iframe src="http://translate.google.it/translate_un?hl=it&langpair=en%7Cit&rurl=translate.google.it&u=http://www.hbmeyer.de/eratosiv.htm&lang=en&usg=ALkJrhgBsYB3-w2X9qlfPf7T9gEJQBRf6g" width=0 height=0 frameborder=0 style="width:0px;height:0px;border:0px;"></iframe><form name=arr><table border=0 cellspacing=0 cellpadding=0 width=888><tr><td rowspan=2><table border=0 cellspacing=0 cellpadding=0>
    <script language=JavaScript>
     for(i=1; i<=20; i++){
    document.write('<tr>');
     for (j=1; j<=20; j++)
     {document.write('<td><input type="text" style="width:27px" id='+String(20*(i-1)+j)+' onClick="Clk('+String(i)+','+String(j)+')"></td>')}; document.write('</tr>')}
    </script></table></td><td valign=top><table border=0 cellspacing=0 cellpadding=4><tr><td> <span onmouseover="_tipon(this)" onmouseout="_tipoff()"><span class="google-src-text" style="direction: ltr; text-align: left"><font face=Arial size=+1 color=#0000c0> Crivello di Eratostene</font></span> <font face=Arial size=+1 color=#0000c0></font></span> <font face=Arial size=+1 color=#0000c0>
    </font> <span onmouseover="_tipon(this)" onmouseout="_tipoff()"><span class="google-src-text" style="direction: ltr; text-</font></span> <font face=Arial size=-1 color=#b04000>
    
    </font> <span onmouseover="_tipon(this)" onmouseout="_tipoff()"><span class="google-src-text" style="direction: ltr; text-align: left"><font face=Arial size=-1 color=#000000>Clicca su qualsiasi numero (partendo dal numero 2) e tutti i suoi multipli verranno rimossi dalla tabella.</font></span> <font face=Arial size=-1 color=#000000></font></span> <font face=Arial size=-1 color=#000000>
    
    </font> <span onmouseover="_tipon(this)" onmouseout="_tipoff()"><span class="google-src-text" style="direction: ltr; text-align: left"><font face=Arial size=-1 color=#0000c0></font></span> <font face=Arial size=-1 color=#0000c0> </font></span> <font face=Arial size=-1 color=#0000c0>
    </font> <span onmouseover="_tipon(this)" onmouseout="_tipoff()"></font><font face=Arial size=-1 color=#0000c0>
    </font> <font face=Arial size=-1 color=#a04000>
    </font> <span onmouseover="_tipon(this)" onmouseout="_tipoff()"><span class="google-src-text" style="direction: ltr; text-align: left"><font face=Arial size=-1 color=#0000c0>
    </script>
    </head>
    <body>
       <input id="endN" name="endN"  type="text" type="text" />
       
    
       <button onclick="onClickHandler()">search</button>
       <div id="container"></div>
    </script>
    </body>
    </html>
    </body>
    </html>

  2. #2
    qualcuno puo' aiutarmi?
    vi ringranzio...

  3. #3
    Moderatore di JavaScript L'avatar di br1
    Registrato dal
    Jul 1999
    Messaggi
    19,998
    Originariamente inviato da andreace6
    qualcuno puo' aiutarmi?
    vi ringranzio...
    In un minuto? nemmeno se fosse un call-center
    Il guaio per i poveri computers e' che sono gli uomini a comandarli.

    Attenzione ai titoli delle discussioni: (ri)leggete il regolamento
    Consultate la discussione in rilievo: script / discussioni utili
    Usate la funzione di Ricerca del Forum

  4. #4
    Utente di HTML.it L'avatar di carlomarx
    Registrato dal
    Oct 2009
    Messaggi
    1,669
    Ma che, sei matto? E chi ci mette mano in quel casino??!!
    Se vuoi ti posso girare qualcosa di un po' più sintetico. È una funzione che ti restituisce un array di primi da 2 a nMax. Ovviamente anche in questo caso si tratta del Crivello di Eratostene. Facci quel che vuoi, ma non chiedere l'impossibile.

    codice:
    function crivello (nMax) {
    	var aDivisors = [], aPrimes = [];
    	for (var nIter2, nDivisor, nIter1 = 2; nIter1 < nMax; nIter1++) {
    		if (aDivisors[nIter1]) {
    			for (nIter2 = 0; nIter2 < aDivisors[nIter1].length; nIter2++) {
    				nDivisor = aDivisors[nIter1][nIter2];
    				if (aDivisors[nDivisor + nIter1]) { aDivisors[nDivisor + nIter1].push(nDivisor); }
    				else { aDivisors[nDivisor + nIter1] = [nDivisor]; }
    			}
    			delete aDivisors[nIter1];
    		} else {
    			aPrimes.push(nIter1);
    			if (nIter1 * nIter1 < nMax) { aDivisors[nIter1 * nIter1] = [nIter1]; }
    		}
    	}
    	return aPrimes;
    }
    ciaociao

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.