Algoritmi sui numeri primi.
-
P_1_6
- Prode Principiante
- Messaggi: 20
- Iscrizione: giovedì 25 dicembre 2014, 23:01
- Distribuzione: Ubuntu 15.10 i686
Re: Algoritmi sui numeri primi.
NON CORRETTO .
L'algoritmo corretto si trova qui:
http://forum.ubuntu-it.org/viewtopic.ph ... 0#p4753150
6001=353*17=6001
controllo 6001/6=1000,166666
X^2+n*(X*6)=6001
n*X=(6001 – X^2)/6
n*X=1000-k
n
a.1) 1000 - 6h^2+10h+4=P
b.1) 1000 - 6h^2+2h=P
per entrambe, l'equazione trasformata è X^2+n*(X*12)=6001 perchè sono entrambe pari
n/2
1.a) h=D 500-[h(3h+5)+2]=P
1.b) h=P 500-[h(3h+5)+2]=P
1.c) h=D 500-h(3h+1)=P
1.d) h=P 500-h(3h+1)=P
per tutte, l'equazione trasformata è X^2+n*(X*24)=6001 perchè sono tutte pari
Hai ragione non riesco a scendere più di questo
Quindi fino a quà è sempre vero quindi per ora l'equazione è X^2+n*(X*24)=6001
quindi troverà la X in (Y-X)/24, per ora.
Credi che fino a quà sia una buona cosa? esiste qualcosa di meglio?Mi posti il link per favore.
---------------------------------------------------------------------------------------------------------------------------------------------------
In effetti si può scendere di un altro scalino (ti spiego)
siccome 500 è pari e n/2 è pari significa che k/2 è pari.
quindi dividendo tutto per 2 abbiamo la certezza che k/4 è un intero(ma non sappiamo se è pari o dispari)
quindi siccome quindi se facciamo 250/2=125 è intero sappiamo che k/4 è pari.
quindi abbiamo che 250-k/4=pari
L'algoritmo corretto si trova qui:
http://forum.ubuntu-it.org/viewtopic.ph ... 0#p4753150
6001=353*17=6001
controllo 6001/6=1000,166666
X^2+n*(X*6)=6001
n*X=(6001 – X^2)/6
n*X=1000-k
n
a.1) 1000 - 6h^2+10h+4=P
b.1) 1000 - 6h^2+2h=P
per entrambe, l'equazione trasformata è X^2+n*(X*12)=6001 perchè sono entrambe pari
n/2
1.a) h=D 500-[h(3h+5)+2]=P
1.b) h=P 500-[h(3h+5)+2]=P
1.c) h=D 500-h(3h+1)=P
1.d) h=P 500-h(3h+1)=P
per tutte, l'equazione trasformata è X^2+n*(X*24)=6001 perchè sono tutte pari
Hai ragione non riesco a scendere più di questo
Quindi fino a quà è sempre vero quindi per ora l'equazione è X^2+n*(X*24)=6001
quindi troverà la X in (Y-X)/24, per ora.
Credi che fino a quà sia una buona cosa? esiste qualcosa di meglio?Mi posti il link per favore.
---------------------------------------------------------------------------------------------------------------------------------------------------
In effetti si può scendere di un altro scalino (ti spiego)
siccome 500 è pari e n/2 è pari significa che k/2 è pari.
quindi dividendo tutto per 2 abbiamo la certezza che k/4 è un intero(ma non sappiamo se è pari o dispari)
quindi siccome quindi se facciamo 250/2=125 è intero sappiamo che k/4 è pari.
quindi abbiamo che 250-k/4=pari
Ultima modifica di P_1_6 il lunedì 4 maggio 2015, 8:12, modificato 1 volta in totale.
Re: Algoritmi sui numeri primi.
Se cerchi materiale accademico con google ne hai fin che vuoi, alcuni link:
Computing the RSA secret Key is Deterministic Polynomial Time equivalent to Factoring): presentazione, paper completo
Small Solutions to Polynomial Equations, and Low Exponent RSA Vulnerabilities
Polynomials and Cryptography
Computing the RSA secret Key is Deterministic Polynomial Time equivalent to Factoring): presentazione, paper completo
Small Solutions to Polynomial Equations, and Low Exponent RSA Vulnerabilities
Polynomials and Cryptography
Prima di aprire una discussione leggi le Guide, poi vedi se c'è un HowTo nel Wiki e fai una ricerca nel Forum!
Applica semplicemente il [Risolto]! Prova: http://forum.ubuntu-it.org/viewtopic.php?f=70&t=548821
Vuoi qualcosa di piu' dal forum? Prova i miei script: http://forum.ubuntu-it.org/viewtopic.php?f=70&t=597066
Applica semplicemente il [Risolto]! Prova: http://forum.ubuntu-it.org/viewtopic.php?f=70&t=548821
Vuoi qualcosa di piu' dal forum? Prova i miei script: http://forum.ubuntu-it.org/viewtopic.php?f=70&t=597066
-
P_1_6
- Prode Principiante
- Messaggi: 20
- Iscrizione: giovedì 25 dicembre 2014, 23:01
- Distribuzione: Ubuntu 15.10 i686
Re: Algoritmi sui numeri primi.
NON CORRETTO .
L'algoritmo corretto si trova qui:
http://forum.ubuntu-it.org/viewtopic.ph ... 0#p4753150
beh allora google punterà al forum ubuntu d'ora in poi.
Siccome sei stato gentile posto la soluzione qui anche prima di metterla sul sito.
ti posto prima gli esempi e tra qualche ora ti posto la spiegazione, sono sicuro ci arriverai da solo.
Esempi:
NR = 3007 n = 11
501 dispari 11 dispari
250.5 pari 5.5 dispari
125.0 dispari 2.5 pari
62.5 pari
.......
....
NR = 6511 n = 61
1085 dispari 61 dispari
542.5 pari 30.5 pari
271.0 dispari 15.0 dispari
135.5 dispari 7.5 dispari
67.5 dispari 3.5 dispari
........
.....
NR = 505 n = 16
84 pari 16 pari
42.0 pari 8.0 pari
21.0 dispari 4.0 pari
10.5 pari 2.0 pari
5.0 dispari
.....
...
NR = 6001 n = 56
1000 pari 56 pari
500.0 pari 28.0 pari
250.0 pari 14.0 pari
125.0 dispari 7.0 dispari
62.5 pari 3.5 dispari
31.0 dispari
.....
...
Questo lo continui chi ha capito
NR=7201 n=60
1200
600
300
150
75
37,5
18,5
9
4,5
2
1
L'algoritmo corretto si trova qui:
http://forum.ubuntu-it.org/viewtopic.ph ... 0#p4753150
beh allora google punterà al forum ubuntu d'ora in poi.
Siccome sei stato gentile posto la soluzione qui anche prima di metterla sul sito.
ti posto prima gli esempi e tra qualche ora ti posto la spiegazione, sono sicuro ci arriverai da solo.
Esempi:
NR = 3007 n = 11
501 dispari 11 dispari
250.5 pari 5.5 dispari
125.0 dispari 2.5 pari
62.5 pari
.......
....
NR = 6511 n = 61
1085 dispari 61 dispari
542.5 pari 30.5 pari
271.0 dispari 15.0 dispari
135.5 dispari 7.5 dispari
67.5 dispari 3.5 dispari
........
.....
NR = 505 n = 16
84 pari 16 pari
42.0 pari 8.0 pari
21.0 dispari 4.0 pari
10.5 pari 2.0 pari
5.0 dispari
.....
...
NR = 6001 n = 56
1000 pari 56 pari
500.0 pari 28.0 pari
250.0 pari 14.0 pari
125.0 dispari 7.0 dispari
62.5 pari 3.5 dispari
31.0 dispari
.....
...
Questo lo continui chi ha capito
NR=7201 n=60
1200
600
300
150
75
37,5
18,5
9
4,5
2
1
Ultima modifica di P_1_6 il lunedì 4 maggio 2015, 8:13, modificato 1 volta in totale.
Re: Algoritmi sui numeri primi.
Non hai spiegato nulla.
A giudicare dai passaggi dai nuovamente per scontato la selezione di UNA delle infinite soluzioni dell'equazione senza dare un motivo valido.
Piu' che "beh allora google punterà al forum ubuntu d'ora in poi" secondo me stai perdendo di credibilità, che già per il modo estremamente disordinato, per gli errori qua e la e la terminologia completamente fuori dal contesto matematico-accademico era bassissima.
Io ci ho provato, ma ci rinuncio nuovamente.
Non fornisci prove, non spieghi algoritmi, scrivi solo sequenze di numeri e formule che "ti passano per la testa".
A giudicare dai passaggi dai nuovamente per scontato la selezione di UNA delle infinite soluzioni dell'equazione senza dare un motivo valido.
Piu' che "beh allora google punterà al forum ubuntu d'ora in poi" secondo me stai perdendo di credibilità, che già per il modo estremamente disordinato, per gli errori qua e la e la terminologia completamente fuori dal contesto matematico-accademico era bassissima.
Io ci ho provato, ma ci rinuncio nuovamente.
Non fornisci prove, non spieghi algoritmi, scrivi solo sequenze di numeri e formule che "ti passano per la testa".
Prima di aprire una discussione leggi le Guide, poi vedi se c'è un HowTo nel Wiki e fai una ricerca nel Forum!
Applica semplicemente il [Risolto]! Prova: http://forum.ubuntu-it.org/viewtopic.php?f=70&t=548821
Vuoi qualcosa di piu' dal forum? Prova i miei script: http://forum.ubuntu-it.org/viewtopic.php?f=70&t=597066
Applica semplicemente il [Risolto]! Prova: http://forum.ubuntu-it.org/viewtopic.php?f=70&t=548821
Vuoi qualcosa di piu' dal forum? Prova i miei script: http://forum.ubuntu-it.org/viewtopic.php?f=70&t=597066
-
P_1_6
- Prode Principiante
- Messaggi: 20
- Iscrizione: giovedì 25 dicembre 2014, 23:01
- Distribuzione: Ubuntu 15.10 i686
Re: Algoritmi sui numeri primi.
NON CORRETTO .
L'algoritmo corretto si trova qui:
http://forum.ubuntu-it.org/viewtopic.ph ... 0#p4753150
ok ti do l'algoritmo completo (anche se volevo farti giocare un pò)
1)fai la divisione per 6 di NR-1 fino ad uno, i decimali devono essere solo 0,0 oppure 0,5
esempio
NR=7201 n=60
1200
600
300
150
75
37,5
18,5
9
4,5
2
1
2)prendi l'insieme{2;2,5;3;3,5} e sottrai uno per volta dall'ultimo numero del esempioche chiamiamoNR1. Il risultato della sottrazione chiamiamolo k1.
quindi fai n2=NR2-(k1*2)
se n2 è compreso tra {4;4,5;5;5,5;6;6,5;7;7,5}continui
e così via per n3 ecc. ecc.
se arrivi fino in cima significa ti calcoli n e lo sostituisci nell'equazione;
se non va bene riinizi da un gradino sopra;
Svolgimento:
NR=7201 n=60
1200 304 {266; ;531,5} P }
600 152 896 {128; ;255,5} P
300 76 448 {64; ;127,5} P
150 38 224 {32; ;63,5} P
75 75-56=19 56*2=112 {16................31,5} D
37,5 37,5-28=9,5 28*2=56 {8;.........15,5} D
18,5 18,5-14=4,5 ; 14*2=28 {4;........7,5} P
9 9-2=7 ;7*2=14 D
4,5wrong
2 wrong
1wrong
non va bene devi riiniziare da 9 provare con 2,5
L'algoritmo corretto si trova qui:
http://forum.ubuntu-it.org/viewtopic.ph ... 0#p4753150
ok ti do l'algoritmo completo (anche se volevo farti giocare un pò)
1)fai la divisione per 6 di NR-1 fino ad uno, i decimali devono essere solo 0,0 oppure 0,5
esempio
NR=7201 n=60
1200
600
300
150
75
37,5
18,5
9
4,5
2
1
2)prendi l'insieme{2;2,5;3;3,5} e sottrai uno per volta dall'ultimo numero del esempioche chiamiamoNR1. Il risultato della sottrazione chiamiamolo k1.
quindi fai n2=NR2-(k1*2)
se n2 è compreso tra {4;4,5;5;5,5;6;6,5;7;7,5}continui
e così via per n3 ecc. ecc.
se arrivi fino in cima significa ti calcoli n e lo sostituisci nell'equazione;
se non va bene riinizi da un gradino sopra;
Svolgimento:
NR=7201 n=60
1200 304 {266; ;531,5} P }
600 152 896 {128; ;255,5} P
300 76 448 {64; ;127,5} P
150 38 224 {32; ;63,5} P
75 75-56=19 56*2=112 {16................31,5} D
37,5 37,5-28=9,5 28*2=56 {8;.........15,5} D
18,5 18,5-14=4,5 ; 14*2=28 {4;........7,5} P
9 9-2=7 ;7*2=14 D
4,5wrong
2 wrong
1wrong
non va bene devi riiniziare da 9 provare con 2,5
Ultima modifica di P_1_6 il lunedì 4 maggio 2015, 8:13, modificato 2 volte in totale.
Re: Algoritmi sui numeri primi.
Ma per favore... "volevo farti giocare".
n=60 da dove lo trovi?
Vedi tu se rispondere, io per certo non perderò altro tempo...
n=60 da dove lo trovi?
Vedi tu se rispondere, io per certo non perderò altro tempo...
Prima di aprire una discussione leggi le Guide, poi vedi se c'è un HowTo nel Wiki e fai una ricerca nel Forum!
Applica semplicemente il [Risolto]! Prova: http://forum.ubuntu-it.org/viewtopic.php?f=70&t=548821
Vuoi qualcosa di piu' dal forum? Prova i miei script: http://forum.ubuntu-it.org/viewtopic.php?f=70&t=597066
Applica semplicemente il [Risolto]! Prova: http://forum.ubuntu-it.org/viewtopic.php?f=70&t=548821
Vuoi qualcosa di piu' dal forum? Prova i miei script: http://forum.ubuntu-it.org/viewtopic.php?f=70&t=597066
-
P_1_6
- Prode Principiante
- Messaggi: 20
- Iscrizione: giovedì 25 dicembre 2014, 23:01
- Distribuzione: Ubuntu 15.10 i686
Re: Algoritmi sui numeri primi.
NON CORRETTO .
L'algoritmo corretto si trova qui:
http://forum.ubuntu-it.org/viewtopic.ph ... 0#p4753150
Scusami se sono stato frainteso.
"volevo farti giocare" == "volevo farti divertire"
Ora cerco di spiegarlo meglio, spero.
Algoritmo
7201
1) controlliamo se 7201/6=G,16666=OK
2) facciamo la divisione per 6 di NR-1 fino ad uno, i decimali devono essere solo 0,0 oppure 0,5
(7201-1)/6=1200
3) dividiamo per 2 fino ad uno, i decimali devono essere solo 0,0 oppure 0,5
NR=7201
1200
600
300
150
75
37,5
18,5
9
4,5
2
1
4) prendiamo l'insieme{ 2 ; 2,5 ; 3; 3,5 } e sottraiamo uno per volta dal terzo numero a partire da sotto (e cioè 4,5) che chiamiamo NR1.
Il risultato della sottrazione chiamiamolo k1.
quindi fai n2=NR2-(k1*2)
se n2 è compreso tra {4;4,5;5;5,5;6;6,5;7;7,5}continui
e così via per n3 ecc. ecc.
Quando arrivi in cima in cima sostituisci la n nell'equazione;
se non va bene riinizi dallo step successivo;
La 4) equivale a dire
prendiamo l'insieme{ 2 ; 2,5 ; 3; 3,5 } e sottraiamo uno per volta dal terzo numero a partire da sotto (e cioè 4,5) che chiamiamo NR1.
Il risultato della sottrazione chiamiamolo k1.
Quindi basta fare RIS=k1 *(2^PROF) dove PROF è la profondità dell'elemento partendo da nel nostro esempio
1200 ha PROF=0
600 ha PROF=1
300 ha PROF=2
ecc.ecc.
1200-RIS=Nvirtuale
da Nvirtuale dobbiamo togliere 1,2,4,8,16,32,64, ecc.ecc. fino alla posizione PROF
ovvero per 4,5 dobbiamo togliere 1,2,4,8,16,32,64,128
e testare l'equazione per
Nvirtuale
Nvirtuale + 1
Nvirtuale + 2
Nvirtuale +4
Nvirtuale +8
Nvirtuale +16
Nvirtuale +32
Nvirtuale +64
Nvirtuale +128
------------------------------------------------------------------------------------------------------------------------------------------------------------------
ESEMPI:
7201
7201/6=1200,1666...
(7201-1)/6=1200
NR=7201
1200
600
300
150
75
37,5
18,5
9
4,5
Proviamo con 2 partendo da 4,5
(4,5-2)*2^8=640=RIS
1200-640=560=Nvirtuale
proviamo l'equazione per
Nvirtuale
Nvirtuale + 1
Nvirtuale + 2
Nvirtuale +4
Nvirtuale +8
Nvirtuale +16
Nvirtuale +32
Nvirtuale +64
Nvirtuale +128
e non va bene
non va bene devi riiniziare da 4,5 provare con 2,5
non va bene devi riiniziare da 4,5 provare con 3
non va bene devi riiniziare da 4,5 provare con 3,5
non va bene devi riiniziare da 9 provare con 2
non va bene devi riiniziare da 9 provare con 2,5
non va bene devi riiniziare da 9 provare con 3
non va bene devi riiniziare da 9 provare con 3,5
non va bene devi riiniziare da 18,5 provare con 2
non va bene devi riiniziare da 18,5 provare con 2,5
non va bene devi riiniziare da 18,5 provare con 3
non va bene devi riiniziare da 18,5 provare con 3,5
non va bene devi riiniziare da 37,5 provare con 2
non va bene devi riiniziare da 37,5 provare con 2,5
non va bene devi riiniziare da 37,5 provare con 3
non va bene devi riiniziare da 37,5 provare con 3,5
non va bene devi riiniziare da 75 provare con 2
non va bene devi riiniziare da 75 provare con 2,5
non va bene devi riiniziare da 75 provare con 3
non va bene devi riiniziare da 75 provare con 3,5
vediamo tutti i passaggi da 75 provando con 3,5
(75-3,5)*2^4 =1144=RIS
1200-RIS=Nvirtuale=56
Nvirtuale
Nvirtuale +1
Nvirtuale +2
Nvirtuale + 4
Nvirtuale + 8
testiamo l'equazione
X^2 + (6 * 60 * X) =7201
e troviamo per [1200-Nvirtuale + 4] che X=19
-------------------------------------------------------------------------------------------------------------------------------------------------------------
Per i casi NR/6=k,83333 ci si comporta analogamente.
L'algoritmo corretto si trova qui:
http://forum.ubuntu-it.org/viewtopic.ph ... 0#p4753150
Scusami se sono stato frainteso.
"volevo farti giocare" == "volevo farti divertire"
Ora cerco di spiegarlo meglio, spero.
Algoritmo
7201
1) controlliamo se 7201/6=G,16666=OK
2) facciamo la divisione per 6 di NR-1 fino ad uno, i decimali devono essere solo 0,0 oppure 0,5
(7201-1)/6=1200
3) dividiamo per 2 fino ad uno, i decimali devono essere solo 0,0 oppure 0,5
NR=7201
1200
600
300
150
75
37,5
18,5
9
4,5
2
1
4) prendiamo l'insieme{ 2 ; 2,5 ; 3; 3,5 } e sottraiamo uno per volta dal terzo numero a partire da sotto (e cioè 4,5) che chiamiamo NR1.
Il risultato della sottrazione chiamiamolo k1.
quindi fai n2=NR2-(k1*2)
se n2 è compreso tra {4;4,5;5;5,5;6;6,5;7;7,5}continui
e così via per n3 ecc. ecc.
Quando arrivi in cima in cima sostituisci la n nell'equazione;
se non va bene riinizi dallo step successivo;
La 4) equivale a dire
prendiamo l'insieme{ 2 ; 2,5 ; 3; 3,5 } e sottraiamo uno per volta dal terzo numero a partire da sotto (e cioè 4,5) che chiamiamo NR1.
Il risultato della sottrazione chiamiamolo k1.
Quindi basta fare RIS=k1 *(2^PROF) dove PROF è la profondità dell'elemento partendo da nel nostro esempio
1200 ha PROF=0
600 ha PROF=1
300 ha PROF=2
ecc.ecc.
1200-RIS=Nvirtuale
da Nvirtuale dobbiamo togliere 1,2,4,8,16,32,64, ecc.ecc. fino alla posizione PROF
ovvero per 4,5 dobbiamo togliere 1,2,4,8,16,32,64,128
e testare l'equazione per
Nvirtuale
Nvirtuale + 1
Nvirtuale + 2
Nvirtuale +4
Nvirtuale +8
Nvirtuale +16
Nvirtuale +32
Nvirtuale +64
Nvirtuale +128
------------------------------------------------------------------------------------------------------------------------------------------------------------------
ESEMPI:
7201
7201/6=1200,1666...
(7201-1)/6=1200
NR=7201
1200
600
300
150
75
37,5
18,5
9
4,5
Proviamo con 2 partendo da 4,5
(4,5-2)*2^8=640=RIS
1200-640=560=Nvirtuale
proviamo l'equazione per
Nvirtuale
Nvirtuale + 1
Nvirtuale + 2
Nvirtuale +4
Nvirtuale +8
Nvirtuale +16
Nvirtuale +32
Nvirtuale +64
Nvirtuale +128
e non va bene
non va bene devi riiniziare da 4,5 provare con 2,5
non va bene devi riiniziare da 4,5 provare con 3
non va bene devi riiniziare da 4,5 provare con 3,5
non va bene devi riiniziare da 9 provare con 2
non va bene devi riiniziare da 9 provare con 2,5
non va bene devi riiniziare da 9 provare con 3
non va bene devi riiniziare da 9 provare con 3,5
non va bene devi riiniziare da 18,5 provare con 2
non va bene devi riiniziare da 18,5 provare con 2,5
non va bene devi riiniziare da 18,5 provare con 3
non va bene devi riiniziare da 18,5 provare con 3,5
non va bene devi riiniziare da 37,5 provare con 2
non va bene devi riiniziare da 37,5 provare con 2,5
non va bene devi riiniziare da 37,5 provare con 3
non va bene devi riiniziare da 37,5 provare con 3,5
non va bene devi riiniziare da 75 provare con 2
non va bene devi riiniziare da 75 provare con 2,5
non va bene devi riiniziare da 75 provare con 3
non va bene devi riiniziare da 75 provare con 3,5
vediamo tutti i passaggi da 75 provando con 3,5
(75-3,5)*2^4 =1144=RIS
1200-RIS=Nvirtuale=56
Nvirtuale
Nvirtuale +1
Nvirtuale +2
Nvirtuale + 4
Nvirtuale + 8
testiamo l'equazione
X^2 + (6 * 60 * X) =7201
e troviamo per [1200-Nvirtuale + 4] che X=19
-------------------------------------------------------------------------------------------------------------------------------------------------------------
Per i casi NR/6=k,83333 ci si comporta analogamente.
Ultima modifica di P_1_6 il lunedì 4 maggio 2015, 8:14, modificato 1 volta in totale.
-
caturen
- Tenace Tecnocrate

- Messaggi: 18034
- Iscrizione: giovedì 8 aprile 2010, 18:41
- Desktop: diversi
- Distribuzione: debian
Re: Algoritmi sui numeri primi.
a volte ritornano
-
P_1_6
- Prode Principiante
- Messaggi: 20
- Iscrizione: giovedì 25 dicembre 2014, 23:01
- Distribuzione: Ubuntu 15.10 i686
Re: Algoritmi sui numeri primi.
NON CORRETTO .
L'algoritmo corretto si trova qui:
http://forum.ubuntu-it.org/viewtopic.ph ... 0#p4753150
Vi posto l'algoritmo corretto, mi date un parere cortesemente.
Algoritmo
7201
1) controlliamo se 7201/6=G,16666=OK
2) facciamo la divisione per 6 di NR-1 fino ad uno, i decimali devono essere solo 0,0 oppure 0,5
(7201-1)/6=1200
3) dividiamo per 2 fino ad uno, i decimali devono essere solo 0,0 oppure 0,5
NR=7201
1200
600
300
150
75
37,5
18,5
9
4,5
2
1
4) prendiamo l’insieme{ 2 ; 2,25 ; 2,5 ; 2,75 ; 3 ; 3,25 ; 3,5 ; 3,75} e sottraiamo uno per volta dal terzo numero a partire da sotto (e cioè 4,5) che chiamiamo NR1.
Il risultato della sottrazione chiamiamolo k1.
quindi fai n=k1*2^PROF dove PROF è la profondità cioè
1200->PROF=0
600->PROF=1
300->PROF=2
ecc.ecc.
sostituiamo n nell’equazione;
se non va bene riinizi dallo step successivo; se va bene il gioco è fatto.
——————————————————————————————————————————————————————
ESEMPI:
7201
7201/6=1200,1666…
(7201-1)/6=1200
NR=7201
1200
600
300
150
75
37,5
18,5
9
4,5
Proviamo con 2
4,5-2=2,5
2,5*(2^8)=640
1200-640=560
per n=560
X^2 + (6 * 560 * X) =7201
non abbiamo soluzioni intere quindi non va bene
non va bene devi riiniziare da 4,5 provare con 2,25
non va bene devi riiniziare da 4,5 provare con 2,5
non va bene devi riiniziare da 4,5 provare con 2,75
non va bene devi riiniziare da 4,5 provare con 3
non va bene devi riiniziare da 4,5 provare con 3,25
non va bene devi riiniziare da 4,5 provare con 3,50
non va bene devi riiniziare da 4,5 provare con 3,75
non va bene devi riiniziare da 9 provare con 2
non va bene devi riiniziare da 9 provare con 2,25
non va bene devi riiniziare da 9 provare con 2,5
non va bene devi riiniziare da 9 provare con 2,75
non va bene devi riiniziare da 9 provare con 3
non va bene devi riiniziare da 9 provare con 3,25
non va bene devi riiniziare da 9 provare con 3,50
non va bene devi riiniziare da 9 provare con 3,75
non va bene devi riiniziare da 18,5 provare con 2
non va bene devi riiniziare da 18,5 provare con 2,25
non va bene devi riiniziare da 18,5 provare con 2,5
non va bene devi riiniziare da 18,5 provare con 2,75
non va bene devi riiniziare da 18,5 provare con 3
non va bene devi riiniziare da 18,5 provare con 3,25
non va bene devi riiniziare da 18,5 provare con 3,50
non va bene devi riiniziare da 18,5 provare con 3,75
non va bene devi riiniziare da 37,5 provare con 2
non va bene devi riiniziare da 37,5 provare con 2,25
non va bene devi riiniziare da 37,5 provare con 2,5
non va bene devi riiniziare da 37,5 provare con 2,75
non va bene devi riiniziare da 37,5 provare con 3
non va bene devi riiniziare da 37,5 provare con 3,25
non va bene devi riiniziare da 37,5 provare con 3,5
non va bene devi riiniziare da 37,5 provare con 3,75
non va bene devi riiniziare da 75 provare con 2
non va bene devi riiniziare da 75 provare con 2,25
non va bene devi riiniziare da 75 provare con 2,5
non va bene devi riiniziare da 75 provare con 2,75
non va bene devi riiniziare da 75 provare con 3
non va bene devi riiniziare da 75 provare con 3,25
non va bene devi riiniziare da 75 provare con 3,5
non va bene devi riiniziare da 75 provare con 3,75
vediamo tutti i passaggi da 75 provando con 3,75
75-3,75=71,25
71,25*(2^4)=1144
1200-1144=60
per n=60
X^2 + (6 * 60 * X) =7201
e troviamo X=19
L'algoritmo corretto si trova qui:
http://forum.ubuntu-it.org/viewtopic.ph ... 0#p4753150
Vi posto l'algoritmo corretto, mi date un parere cortesemente.
Algoritmo
7201
1) controlliamo se 7201/6=G,16666=OK
2) facciamo la divisione per 6 di NR-1 fino ad uno, i decimali devono essere solo 0,0 oppure 0,5
(7201-1)/6=1200
3) dividiamo per 2 fino ad uno, i decimali devono essere solo 0,0 oppure 0,5
NR=7201
1200
600
300
150
75
37,5
18,5
9
4,5
2
1
4) prendiamo l’insieme{ 2 ; 2,25 ; 2,5 ; 2,75 ; 3 ; 3,25 ; 3,5 ; 3,75} e sottraiamo uno per volta dal terzo numero a partire da sotto (e cioè 4,5) che chiamiamo NR1.
Il risultato della sottrazione chiamiamolo k1.
quindi fai n=k1*2^PROF dove PROF è la profondità cioè
1200->PROF=0
600->PROF=1
300->PROF=2
ecc.ecc.
sostituiamo n nell’equazione;
se non va bene riinizi dallo step successivo; se va bene il gioco è fatto.
——————————————————————————————————————————————————————
ESEMPI:
7201
7201/6=1200,1666…
(7201-1)/6=1200
NR=7201
1200
600
300
150
75
37,5
18,5
9
4,5
Proviamo con 2
4,5-2=2,5
2,5*(2^8)=640
1200-640=560
per n=560
X^2 + (6 * 560 * X) =7201
non abbiamo soluzioni intere quindi non va bene
non va bene devi riiniziare da 4,5 provare con 2,25
non va bene devi riiniziare da 4,5 provare con 2,5
non va bene devi riiniziare da 4,5 provare con 2,75
non va bene devi riiniziare da 4,5 provare con 3
non va bene devi riiniziare da 4,5 provare con 3,25
non va bene devi riiniziare da 4,5 provare con 3,50
non va bene devi riiniziare da 4,5 provare con 3,75
non va bene devi riiniziare da 9 provare con 2
non va bene devi riiniziare da 9 provare con 2,25
non va bene devi riiniziare da 9 provare con 2,5
non va bene devi riiniziare da 9 provare con 2,75
non va bene devi riiniziare da 9 provare con 3
non va bene devi riiniziare da 9 provare con 3,25
non va bene devi riiniziare da 9 provare con 3,50
non va bene devi riiniziare da 9 provare con 3,75
non va bene devi riiniziare da 18,5 provare con 2
non va bene devi riiniziare da 18,5 provare con 2,25
non va bene devi riiniziare da 18,5 provare con 2,5
non va bene devi riiniziare da 18,5 provare con 2,75
non va bene devi riiniziare da 18,5 provare con 3
non va bene devi riiniziare da 18,5 provare con 3,25
non va bene devi riiniziare da 18,5 provare con 3,50
non va bene devi riiniziare da 18,5 provare con 3,75
non va bene devi riiniziare da 37,5 provare con 2
non va bene devi riiniziare da 37,5 provare con 2,25
non va bene devi riiniziare da 37,5 provare con 2,5
non va bene devi riiniziare da 37,5 provare con 2,75
non va bene devi riiniziare da 37,5 provare con 3
non va bene devi riiniziare da 37,5 provare con 3,25
non va bene devi riiniziare da 37,5 provare con 3,5
non va bene devi riiniziare da 37,5 provare con 3,75
non va bene devi riiniziare da 75 provare con 2
non va bene devi riiniziare da 75 provare con 2,25
non va bene devi riiniziare da 75 provare con 2,5
non va bene devi riiniziare da 75 provare con 2,75
non va bene devi riiniziare da 75 provare con 3
non va bene devi riiniziare da 75 provare con 3,25
non va bene devi riiniziare da 75 provare con 3,5
non va bene devi riiniziare da 75 provare con 3,75
vediamo tutti i passaggi da 75 provando con 3,75
75-3,75=71,25
71,25*(2^4)=1144
1200-1144=60
per n=60
X^2 + (6 * 60 * X) =7201
e troviamo X=19
Ultima modifica di P_1_6 il lunedì 4 maggio 2015, 8:14, modificato 1 volta in totale.
-
P_1_6
- Prode Principiante
- Messaggi: 20
- Iscrizione: giovedì 25 dicembre 2014, 23:01
- Distribuzione: Ubuntu 15.10 i686
Re: Algoritmi sui numeri primi.
Algoritmo corretto.
Fattorizzazione e test di primalità di Lepore-Santo in al massimo logaritmo di (Y-X)/6
Vi mostrerò l'esempio base cioè la fattorizzazione di due numeri primi perchè reiterando il processo si può fattorizzare qualsiasi tipo di numero.
Ogni numero NR (non muliplo di 2 e di 3 ) diviso sei da come decimali 1666p e 8333p (p sta per periodico) poichè per ogni NR modulo sei si avrà
1/6= 0,1666p
il 2 è divisibile per 2
il 3 divisibile per 3
il 4 divisibile per 2
5/6=0,8333p
il 6 divisibile per 2 e per 3
e ciò equivale a dire che partendo da 1 si deve fare una volta +4 una volta +2 e quindi l’insieme dei numeri non muliplo di 2 e di 3 sarà:
1
1+4=5
5+2=7
7+4=11
11+2=13
13+4=17
17+2=19
19+4=23
23+2=25
25+4=29
29+2=31
…..
…..
ecc.ecc.
quindi si può vedere questo:
5*5; 25+(1*30) ; 25+(2*30); 25+(3*30); ecc.
5*7; 35+(1*30) ; 35+(2*30); 35+(3*30); ecc.
7*7; 49+(1*42); 49+(2*42); ecc. ecc.
7*11; 77+(1*42); 77+(2*42); ecc. ecc.
Da ciò possiamo ricavare le tre equazioni:
X^2+n*(X*6)=NR
X*(X+2)+n(X*6)=NR
X*(X+4)+n(X*6)=NR
dove n=(Y-X)/6 nella prima equazione
n=(Y-X-2)/6 nella seconda equazione
n=(Y-X-4)/6 nella terza equazione
Quindi se troviamo il valore di n troviamo X.
Infine diciamo che ogni numero dispari X, non multiplo di 3 si può scrivere sotto la forma:
X=6h+1 ed X=6h+5
----------------------------------------------------------------------------------
Da qui in poi l'algoritmo è stato migliorato e si trova qui
http://forum.ubuntu-it.org/viewtopic.ph ... 0#p4754170
Dividiamo i casi :
un numero NR=X*Y
1) se NR=6K+1 utilizzeremo la prima equazione e cioè X^2+6nX=NR
2) NR=6K+5 dovremmo utilizzare entrambe le equazioni, ma questo caso si rifà al primo caso 1)
Il primo caso 1) si divide in due casi
1.1) X e Y sono entrambi nella forma 6h+1
1.2) X e Y sono entrambi nella forma 6h+5
Dividiamo il caso 1.1) in
1.1.1) h è dispari
1.1.2) h è pari
Dividiamo il caso 1.1.2) in
1.1.2.1) h è pari ed è nella forma 2f con f dispari
1.1.2.2) h è pari ed è nella forma 2f con f pari
Dividiamo il caso 1.2) in
1.2.1) h è dispari
1.2.2) h è pari
Dividiamo il caso 1.2.2) in
1.2.2.1) h è pari ed è nella forma 2f con f dispari
1.2.2.2) h è pari ed è nella forma 2f con f pari
Ve li dimostrerò tutti i casi iniziamo da 1.2)
Prendiamo come esempio NR=6001=17*353
X^2+6nX=6001 dobbiamo testare per n=1 e non da X intero quindi continuiamo
dobbiamo testare quindi la 1) quindi 1.1) e 1.2) quindi 1.1.1) e 1.1.2) e 1.2.1) e 1.2.2) quindi quindi i casi da testare saranno 4*2=8.
Io vi farò vedere solo il caso giusto 1.2) X e Y sono entrambi nella forma 6h+5 e 1.2.2) h è pari e 1.2.2.1) h è pari ed è nella forma 2f con f dispari
Quindi testiamo X=6h+5 con h pari.
sostituiamo ad X , 6h+5 ed avremo:
36h^2 + 60h +25 +6nX=6001
sottraiamo -1 da entrambe le parti e dividiamo tutto per 6
6h^2 + 10h +4 +nX=1000
da ciò si può notare che n è pari poichè abbiamo detto che h è pari , X è dispari e 1000 è pari
quindi dobbiamo dividere n per 2 che significa raddoppiare 6X e avremo
X^2+12nX=6001 dobbiamo testare per n=1 e non da X intero quindi continuiamo
36h^2 + 60h +25 +12nX=6001
sottraiamo -1 da entrambe le parti e dividiamo tutto per 12
3h^2 + 5h +2 +nX=500 quindi n è pari
quindi dobbiamo dividere n per 2 che significa raddoppiare 12X e avremo
X^2+24nX=6001 dobbiamo testare per n=1 e non da X intero quindi continuiamo
36h^2 + 60h +25 +24nX=6001
sottraiamo -1 da entrambe le parti e dividiamo tutto per 24
1,5h^2 + 2,5h + 1 + nX=250 quindi se h è pari con h=2f con f dispari,
segue che n è pari
quindi dobbiamo dividere n per 2 che significa raddoppiare 24X e avremo
X^2+48nX=6001 dobbiamo testare per n=1 e non da X intero quindi continuiamo
36h^2 + 60h +25 +48nX=6001
sottraiamo -1 da entrambe le parti e dividiamo tutto per 48
0,75h^2 + 1,25h + 0,5 + nX=125 quindi l’unico valore può essere h=2 ma continuiamo
quindi n è dispari
quindi dobbiamo sottrarre 1 ad n che significa aggiunger 48X
e poi dobbiamo dividere n per 2 che significa raddoppiare 48X e avremo
X^2+96nX +48X=6001 dobbiamo testare per n=1 e non da X intero quindi continuiamo
ora c'è anche 48X che è uguale a 48*(6h+5)=288h + 240 quindi sostituiamo
36h^2 + 60h +25 +96nX + 288h + 240 =6001
sottraiamo -1 da entrambe le parti e dividiamo tutto per 96
0,375h^2 + 0,625h + 0,25 + nX + 3h + 2,5 =62,5
portiamo il 2,5 dall'altra parte e avremo (questo lo faccio solo per semplificare)
0,375h^2 + 0,625h + 0,25 + nX + 3h =60 qui h può essere soltanto 2 quindi potremmo fermarci ma continuiamo
segue che n è dispari
quindi dobbiamo sottrarre 1 ad n che significa aggiunger 96X
e poi dobbiamo dividere n per 2 che significa raddoppiare 96X e avremo
X^2+192nX + 96 X+ 48X=6001 che per n =1
X^2+336X =6001 darò X=17
quindi abbiamo finito gli altri casi ve li faccio vedere tra qualche giorno.
--------------------------------------------------------------------------------------------------------------------------------------------------------
Alberico Lepore, Ruggiero Santo 02/05/2015
http://howtodecodersa.altervista.org/te ... re-in-log/
Fattorizzazione e test di primalità di Lepore-Santo in al massimo logaritmo di (Y-X)/6
Vi mostrerò l'esempio base cioè la fattorizzazione di due numeri primi perchè reiterando il processo si può fattorizzare qualsiasi tipo di numero.
Ogni numero NR (non muliplo di 2 e di 3 ) diviso sei da come decimali 1666p e 8333p (p sta per periodico) poichè per ogni NR modulo sei si avrà
1/6= 0,1666p
il 2 è divisibile per 2
il 3 divisibile per 3
il 4 divisibile per 2
5/6=0,8333p
il 6 divisibile per 2 e per 3
e ciò equivale a dire che partendo da 1 si deve fare una volta +4 una volta +2 e quindi l’insieme dei numeri non muliplo di 2 e di 3 sarà:
1
1+4=5
5+2=7
7+4=11
11+2=13
13+4=17
17+2=19
19+4=23
23+2=25
25+4=29
29+2=31
…..
…..
ecc.ecc.
quindi si può vedere questo:
5*5; 25+(1*30) ; 25+(2*30); 25+(3*30); ecc.
5*7; 35+(1*30) ; 35+(2*30); 35+(3*30); ecc.
7*7; 49+(1*42); 49+(2*42); ecc. ecc.
7*11; 77+(1*42); 77+(2*42); ecc. ecc.
Da ciò possiamo ricavare le tre equazioni:
X^2+n*(X*6)=NR
X*(X+2)+n(X*6)=NR
X*(X+4)+n(X*6)=NR
dove n=(Y-X)/6 nella prima equazione
n=(Y-X-2)/6 nella seconda equazione
n=(Y-X-4)/6 nella terza equazione
Quindi se troviamo il valore di n troviamo X.
Infine diciamo che ogni numero dispari X, non multiplo di 3 si può scrivere sotto la forma:
X=6h+1 ed X=6h+5
----------------------------------------------------------------------------------
Da qui in poi l'algoritmo è stato migliorato e si trova qui
http://forum.ubuntu-it.org/viewtopic.ph ... 0#p4754170
Dividiamo i casi :
un numero NR=X*Y
1) se NR=6K+1 utilizzeremo la prima equazione e cioè X^2+6nX=NR
2) NR=6K+5 dovremmo utilizzare entrambe le equazioni, ma questo caso si rifà al primo caso 1)
Il primo caso 1) si divide in due casi
1.1) X e Y sono entrambi nella forma 6h+1
1.2) X e Y sono entrambi nella forma 6h+5
Dividiamo il caso 1.1) in
1.1.1) h è dispari
1.1.2) h è pari
Dividiamo il caso 1.1.2) in
1.1.2.1) h è pari ed è nella forma 2f con f dispari
1.1.2.2) h è pari ed è nella forma 2f con f pari
Dividiamo il caso 1.2) in
1.2.1) h è dispari
1.2.2) h è pari
Dividiamo il caso 1.2.2) in
1.2.2.1) h è pari ed è nella forma 2f con f dispari
1.2.2.2) h è pari ed è nella forma 2f con f pari
Ve li dimostrerò tutti i casi iniziamo da 1.2)
Prendiamo come esempio NR=6001=17*353
X^2+6nX=6001 dobbiamo testare per n=1 e non da X intero quindi continuiamo
dobbiamo testare quindi la 1) quindi 1.1) e 1.2) quindi 1.1.1) e 1.1.2) e 1.2.1) e 1.2.2) quindi quindi i casi da testare saranno 4*2=8.
Io vi farò vedere solo il caso giusto 1.2) X e Y sono entrambi nella forma 6h+5 e 1.2.2) h è pari e 1.2.2.1) h è pari ed è nella forma 2f con f dispari
Quindi testiamo X=6h+5 con h pari.
sostituiamo ad X , 6h+5 ed avremo:
36h^2 + 60h +25 +6nX=6001
sottraiamo -1 da entrambe le parti e dividiamo tutto per 6
6h^2 + 10h +4 +nX=1000
da ciò si può notare che n è pari poichè abbiamo detto che h è pari , X è dispari e 1000 è pari
quindi dobbiamo dividere n per 2 che significa raddoppiare 6X e avremo
X^2+12nX=6001 dobbiamo testare per n=1 e non da X intero quindi continuiamo
36h^2 + 60h +25 +12nX=6001
sottraiamo -1 da entrambe le parti e dividiamo tutto per 12
3h^2 + 5h +2 +nX=500 quindi n è pari
quindi dobbiamo dividere n per 2 che significa raddoppiare 12X e avremo
X^2+24nX=6001 dobbiamo testare per n=1 e non da X intero quindi continuiamo
36h^2 + 60h +25 +24nX=6001
sottraiamo -1 da entrambe le parti e dividiamo tutto per 24
1,5h^2 + 2,5h + 1 + nX=250 quindi se h è pari con h=2f con f dispari,
segue che n è pari
quindi dobbiamo dividere n per 2 che significa raddoppiare 24X e avremo
X^2+48nX=6001 dobbiamo testare per n=1 e non da X intero quindi continuiamo
36h^2 + 60h +25 +48nX=6001
sottraiamo -1 da entrambe le parti e dividiamo tutto per 48
0,75h^2 + 1,25h + 0,5 + nX=125 quindi l’unico valore può essere h=2 ma continuiamo
quindi n è dispari
quindi dobbiamo sottrarre 1 ad n che significa aggiunger 48X
e poi dobbiamo dividere n per 2 che significa raddoppiare 48X e avremo
X^2+96nX +48X=6001 dobbiamo testare per n=1 e non da X intero quindi continuiamo
ora c'è anche 48X che è uguale a 48*(6h+5)=288h + 240 quindi sostituiamo
36h^2 + 60h +25 +96nX + 288h + 240 =6001
sottraiamo -1 da entrambe le parti e dividiamo tutto per 96
0,375h^2 + 0,625h + 0,25 + nX + 3h + 2,5 =62,5
portiamo il 2,5 dall'altra parte e avremo (questo lo faccio solo per semplificare)
0,375h^2 + 0,625h + 0,25 + nX + 3h =60 qui h può essere soltanto 2 quindi potremmo fermarci ma continuiamo
segue che n è dispari
quindi dobbiamo sottrarre 1 ad n che significa aggiunger 96X
e poi dobbiamo dividere n per 2 che significa raddoppiare 96X e avremo
X^2+192nX + 96 X+ 48X=6001 che per n =1
X^2+336X =6001 darò X=17
quindi abbiamo finito gli altri casi ve li faccio vedere tra qualche giorno.
--------------------------------------------------------------------------------------------------------------------------------------------------------
Alberico Lepore, Ruggiero Santo 02/05/2015
http://howtodecodersa.altervista.org/te ... re-in-log/
Ultima modifica di P_1_6 il martedì 5 maggio 2015, 7:30, modificato 7 volte in totale.
-
caturen
- Tenace Tecnocrate

- Messaggi: 18034
- Iscrizione: giovedì 8 aprile 2010, 18:41
- Desktop: diversi
- Distribuzione: debian
Re: Algoritmi sui numeri primi.
non sto nella pelle dalla voglia di vederliquindi abbiamo finito gli altri casi ve li faccio vedere tra qualche giorno.
- DragonLife
- Scoppiettante Seguace

- Messaggi: 250
- Iscrizione: giovedì 28 agosto 2014, 20:03
- Desktop: Unity
- Distribuzione: Ubuntu 14.04.1 LTS x86_64
Re: Algoritmi sui numeri primi.
In realtà vedo che l'algoritmo funziona, l'ultimo calcolo lo hai sbagliato: 19+4=23 non 25 e 23 è un numero primo.Zoff [url=http://forum.ubuntu-it.org/viewtopic.php?p=4699216#p4699216][img]http://forum.ubuntu-it.org/images/icons/icona-cita.gif[/img][/url] ha scritto:Non credo di aver capito cosa intendi.
5 , 5+2=7 , 7+4=11 ,11+2=13 , 13+4=17, 17+2=19, 19+4=25 (NON PRIMO!)
-
P_1_6
- Prode Principiante
- Messaggi: 20
- Iscrizione: giovedì 25 dicembre 2014, 23:01
- Distribuzione: Ubuntu 15.10 i686
Re: Algoritmi sui numeri primi.
grazie per la tua opinione
Re: Algoritmi sui numeri primi.
Ehm... scrivendo ho saltanto un passaggio che avevo fatto a mente:DragonLife [url=http://forum.ubuntu-it.org/viewtopic.php?p=4753560#p4753560][img]http://forum.ubuntu-it.org/images/icons/icona-cita.gif[/img][/url] ha scritto:In realtà vedo che l'algoritmo funziona, l'ultimo calcolo lo hai sbagliato: 19+4=23 non 25 e 23 è un numero primo.Zoff [url=http://forum.ubuntu-it.org/viewtopic.php?p=4699216#p4699216][img]http://forum.ubuntu-it.org/images/icons/icona-cita.gif[/img][/url] ha scritto:Non credo di aver capito cosa intendi.
5 , 5+2=7 , 7+4=11 ,11+2=13 , 13+4=17, 17+2=19, 19+4=25 (NON PRIMO!)
5 , 5+2=7 , 7+4=11 ,11+2=13 , 13+4=17, 17+2=19, 19+4=23, 23+2=25 (NON PRIMO!)
Prima di aprire una discussione leggi le Guide, poi vedi se c'è un HowTo nel Wiki e fai una ricerca nel Forum!
Applica semplicemente il [Risolto]! Prova: http://forum.ubuntu-it.org/viewtopic.php?f=70&t=548821
Vuoi qualcosa di piu' dal forum? Prova i miei script: http://forum.ubuntu-it.org/viewtopic.php?f=70&t=597066
Applica semplicemente il [Risolto]! Prova: http://forum.ubuntu-it.org/viewtopic.php?f=70&t=548821
Vuoi qualcosa di piu' dal forum? Prova i miei script: http://forum.ubuntu-it.org/viewtopic.php?f=70&t=597066
- DragonLife
- Scoppiettante Seguace

- Messaggi: 250
- Iscrizione: giovedì 28 agosto 2014, 20:03
- Desktop: Unity
- Distribuzione: Ubuntu 14.04.1 LTS x86_64
Re: Algoritmi sui numeri primi.
Ah, hai ragione, excuse moiZoff [url=http://forum.ubuntu-it.org/viewtopic.php?p=4753686#p4753686][img]http://forum.ubuntu-it.org/images/icons/icona-cita.gif[/img][/url] ha scritto:Ehm... scrivendo ho saltanto un passaggio che avevo fatto a mente:DragonLife [url=http://forum.ubuntu-it.org/viewtopic.php?p=4753560#p4753560][img]http://forum.ubuntu-it.org/images/icons/icona-cita.gif[/img][/url] ha scritto:In realtà vedo che l'algoritmo funziona, l'ultimo calcolo lo hai sbagliato: 19+4=23 non 25 e 23 è un numero primo.Zoff [url=http://forum.ubuntu-it.org/viewtopic.php?p=4699216#p4699216][img]http://forum.ubuntu-it.org/images/icons/icona-cita.gif[/img][/url] ha scritto:Non credo di aver capito cosa intendi.
5 , 5+2=7 , 7+4=11 ,11+2=13 , 13+4=17, 17+2=19, 19+4=25 (NON PRIMO!)
5 , 5+2=7 , 7+4=11 ,11+2=13 , 13+4=17, 17+2=19, 19+4=23, 23+2=25 (NON PRIMO!)
-
P_1_6
- Prode Principiante
- Messaggi: 20
- Iscrizione: giovedì 25 dicembre 2014, 23:01
- Distribuzione: Ubuntu 15.10 i686
Re: Algoritmi sui numeri primi.
Miglioramento dell'algoritmo
Miglioramento dell'algoritmo
dividiamo solo tra pari e dispari (ma anche questa distinzione può essere eliminata) per comodità
vi faccio il solito esempio di 6001 con h pari
vado un po veloce ma sono sicuro di farmi capire
Immaginate un albero binario al primo livello per ogni tipo di pari non cambia niente quindi n in questo caso è pari,
X^2+6nX=6001
6h^2 + 10h +4 +nX=1000 n è pari
al secondo livello per ogni tipo di pari non cambia niente quindi n in questo caso è pari,
X^2+12nX=6001
3h^2 + 5h +2 +nX=500 n è pari se h è pari quindi procediamo in entrambi i casi
al terzo livello si fa la distinzione tra h=2k e k è dispari e h=2k e k è pari
h pari
X^2+24nX=6001
1,5h^2 + 2,5h + 1 + nX=250 n è pari se h=2k e k è dispari ed n è dispari se h=2k e k è pari quindi procediamo in entrambi i casi
dal quarto livello in poi parte il vero e proprio algoritmo si fa la distinzione tra h=2k e k=2f con f pari e n è dispari con h=2k e k=2f con f dispari se il ramo è pieno ovvero non ci sono risultati impossibili allora non è il ramo giusto se il ramo non è pieno cioè ha una soluzione impossibile allora è il ramo giusto
h=2k con k pari
X^2+48nX+24X=6001
0,75h^2 + 1,25h + 0,5 + nX +3h+2,5=125 n è pari con h=2k e k=2f con f pari e n è dispari con h=2k e k=2f con f dispari continuiamo
se avessimo provato n è pari con h=2k e k=2f con f pari e n è dispari con h=2k e k=2f con f dispari in entrambi i casi avremmo avuto soluzioni quindi non è il ramo giusto
h=2k con k dispari
X^2+48nX=6001
0,75h^2 + 1,25h + 0,5 + nX =125 n è dispari con h=2k e k=2f+1 con f pari e n è pari con h=2k e k=2f+1 con f dispari continuiamo
se avessimo provato n è pari con h=2k e k=2f+1 con f dispari n risulterebbe non intero quindi è impossibile quindi questo è il ramo giusto
h=2k e k=2f+1 con f pari
X^2+96nX+24X=6001
0,375h^2 + 0,625h + 0,25 + nX + 1,5h + 1,25 =62,5 n è dispari con h=2k e k=2f+1 e f=2d con d pari e n risulterebbe non intero con h=2k e k=2f+1 e f=2d con d dispari pari quindi abbiamo una soluzione impossibile siamo sul ramo giusto
h=2k con h=2k e k=2f+1 e f=2d con d pari
X^2+192nX + 96 X+ 48X=6001 che per n =1
X^2+336X =6001 darà X=17
1)vedere se un equazione é pari o dispari è molto semplice
basta mettere al posto di k i valori di 1 e 2
al posto di f i valori 1 e 2
e così via
2)dal quarto livello in poi se un ramo ha due sotto rami completi non è il ramo giusto
se un ramo ha un sottoramo impossibile allora è il ramo giusto
Spero non ci siano errori
----------------------------------------------------------------------------------------------------------------------------------------------
Alberico Lepore, Ruggiero Santo 05/05/2015
Miglioramento dell'algoritmo
dividiamo solo tra pari e dispari (ma anche questa distinzione può essere eliminata) per comodità
vi faccio il solito esempio di 6001 con h pari
vado un po veloce ma sono sicuro di farmi capire
Immaginate un albero binario al primo livello per ogni tipo di pari non cambia niente quindi n in questo caso è pari,
X^2+6nX=6001
6h^2 + 10h +4 +nX=1000 n è pari
al secondo livello per ogni tipo di pari non cambia niente quindi n in questo caso è pari,
X^2+12nX=6001
3h^2 + 5h +2 +nX=500 n è pari se h è pari quindi procediamo in entrambi i casi
al terzo livello si fa la distinzione tra h=2k e k è dispari e h=2k e k è pari
h pari
X^2+24nX=6001
1,5h^2 + 2,5h + 1 + nX=250 n è pari se h=2k e k è dispari ed n è dispari se h=2k e k è pari quindi procediamo in entrambi i casi
dal quarto livello in poi parte il vero e proprio algoritmo si fa la distinzione tra h=2k e k=2f con f pari e n è dispari con h=2k e k=2f con f dispari se il ramo è pieno ovvero non ci sono risultati impossibili allora non è il ramo giusto se il ramo non è pieno cioè ha una soluzione impossibile allora è il ramo giusto
h=2k con k pari
X^2+48nX+24X=6001
0,75h^2 + 1,25h + 0,5 + nX +3h+2,5=125 n è pari con h=2k e k=2f con f pari e n è dispari con h=2k e k=2f con f dispari continuiamo
se avessimo provato n è pari con h=2k e k=2f con f pari e n è dispari con h=2k e k=2f con f dispari in entrambi i casi avremmo avuto soluzioni quindi non è il ramo giusto
h=2k con k dispari
X^2+48nX=6001
0,75h^2 + 1,25h + 0,5 + nX =125 n è dispari con h=2k e k=2f+1 con f pari e n è pari con h=2k e k=2f+1 con f dispari continuiamo
se avessimo provato n è pari con h=2k e k=2f+1 con f dispari n risulterebbe non intero quindi è impossibile quindi questo è il ramo giusto
h=2k e k=2f+1 con f pari
X^2+96nX+24X=6001
0,375h^2 + 0,625h + 0,25 + nX + 1,5h + 1,25 =62,5 n è dispari con h=2k e k=2f+1 e f=2d con d pari e n risulterebbe non intero con h=2k e k=2f+1 e f=2d con d dispari pari quindi abbiamo una soluzione impossibile siamo sul ramo giusto
h=2k con h=2k e k=2f+1 e f=2d con d pari
X^2+192nX + 96 X+ 48X=6001 che per n =1
X^2+336X =6001 darà X=17
1)vedere se un equazione é pari o dispari è molto semplice
basta mettere al posto di k i valori di 1 e 2
al posto di f i valori 1 e 2
e così via
2)dal quarto livello in poi se un ramo ha due sotto rami completi non è il ramo giusto
se un ramo ha un sottoramo impossibile allora è il ramo giusto
Spero non ci siano errori
----------------------------------------------------------------------------------------------------------------------------------------------
Alberico Lepore, Ruggiero Santo 05/05/2015
-
P_1_6
- Prode Principiante
- Messaggi: 20
- Iscrizione: giovedì 25 dicembre 2014, 23:01
- Distribuzione: Ubuntu 15.10 i686
Re: Algoritmi sui numeri primi.
Test di primalità di Lepore-Santo in O(k)
http://howtodecodersa.altervista.org/te ... nto-in-ok/
http://howtodecodersa.altervista.org/te ... nto-in-ok/
- DragonLife
- Scoppiettante Seguace

- Messaggi: 250
- Iscrizione: giovedì 28 agosto 2014, 20:03
- Desktop: Unity
- Distribuzione: Ubuntu 14.04.1 LTS x86_64
Re: Algoritmi sui numeri primi.
Credo che il crivello di Eratostene sia molto piu semplice ed efficienteP_1_6 [url=http://forum.ubuntu-it.org/viewtopic.php?p=4699141#p4699141][img]http://forum.ubuntu-it.org/images/icons/icona-cita.gif[/img][/url] ha scritto:Ho creato questi tre algoritmi e vorrei un vostro parere?
http://albericolepore.altervista.org/crivello-lepore/
e
http://albericolepore.altervista.org/te ... ta-lepore/
e
http://albericolepore.altervista.org/co ... uccessivo/
grazie
-
P_1_6
- Prode Principiante
- Messaggi: 20
- Iscrizione: giovedì 25 dicembre 2014, 23:01
- Distribuzione: Ubuntu 15.10 i686
Re: Algoritmi sui numeri primi.
Se vuoi i primi fino ad N
Prova a generare i numeri 6h+1 e 6h+5 e avrai N/3.
Poi prendi uno per volta i numeri generati G e mettili al posto di X qui X^2+n*(X*6)=NR
Se il prossimo numero generato è +2 metti G quì
X*(X+2)+n(X*6)=NR
Se il prossimo numero generato è +4 metti G quì
X*(X+4)+n(X*6)=NR
Non ti dimenticare di farlo fino a radice quadrata.
Poi confrontalo con tutti i crivelli esistenti e fammi sapere.
http://www.albericolepore.org/crivello-di-lepore/
Prova a generare i numeri 6h+1 e 6h+5 e avrai N/3.
Poi prendi uno per volta i numeri generati G e mettili al posto di X qui X^2+n*(X*6)=NR
Se il prossimo numero generato è +2 metti G quì
X*(X+2)+n(X*6)=NR
Se il prossimo numero generato è +4 metti G quì
X*(X+4)+n(X*6)=NR
Non ti dimenticare di farlo fino a radice quadrata.
Poi confrontalo con tutti i crivelli esistenti e fammi sapere.
http://www.albericolepore.org/crivello-di-lepore/
- DragonLife
- Scoppiettante Seguace

- Messaggi: 250
- Iscrizione: giovedì 28 agosto 2014, 20:03
- Desktop: Unity
- Distribuzione: Ubuntu 14.04.1 LTS x86_64
Re: Algoritmi sui numeri primi.
Non ho letto tutto e sinceramente non ne ho voglia, quindi non so cosa rappresenti h e cosa rapperesenti G... Comunque mi sebra un "casino"... Quello di Eratostene è semplicissimo.P_1_6 [url=http://forum.ubuntu-it.org/viewtopic.php?p=4756271#p4756271][img]http://forum.ubuntu-it.org/images/icons/icona-cita.gif[/img][/url] ha scritto:Se vuoi i primi fino ad N
Prova a generare i numeri 6h+1 e 6h+5 e avrai N/3.
Poi prendi uno per volta i numeri generati G e mettili al posto di X qui X^2+n*(X*6)=NR
Se il prossimo numero generato è +2 metti G quì
X*(X+2)+n(X*6)=NR
Se il prossimo numero generato è +4 metti G quì
X*(X+4)+n(X*6)=NR
Non ti dimenticare di farlo fino a radice quadrata.
Poi confrontalo con tutti i crivelli esistenti e fammi sapere.
http://www.albericolepore.org/crivello-di-lepore/
Chi c’è in linea
Visualizzano questa sezione: 0 utenti iscritti e 4 ospiti
