Jump to content
ÐÒ&

Mini Concurs

Recommended Posts

stii ce e..avea dreptate ala de mai sus.

daca scadem dintrun numar superprim o cifra pe aia din dreapta..ramanem cu un numar tot SUPERPRIM..DA FARA O CIFRA

cum formezi iar numarul supeprim e mai complicat.

defapta la sfarsitul unui nr prim daca adaugi 1 , 3 , 7 , 9 tot prim e.

bine hai ca bag alta:

ne facem un propgramel in php.

si vrem sa masuram in cat trimp ruleaza.ce idee practica am avea:)?

Link to comment
Share on other sites

apelezi time() sau microtime() la inceput si la sfarsit, la care sfarsit faci difenta si o printezi.

referitor la intrebarea cu numere prime:

se face un arbore. fiecare nod e o cifra. dintr-un nod pleaca de obicei una sau doua ramuri, foarte rar trei, poate chiar niciodata. asadar, pentru un numar chiar si cu 9 cifre nu va fi foarte greu de gasit. cateva milisecunde :)

pentru 9 cifre cred ca sunt in jur de 200 numere.

si daca tot vorbim, test!: cine gaseste mai repede cate numere sunt cu 9 cifre? se baga cineva?

si... cu intrebarea mea cum ramane? nici un cunoscator? hint: in practica, numerele a si b aleatorii sunt de obicei foarte mari

Link to comment
Share on other sites

personal as baga un alt php (sa complic putin sa nu modific php-ul initial)


<? $time_start = microtime_float();

include "phpulmeu.php";

$time_end = microtime_float();
$time = $time_end - $time_start;
echo "Rulat in $time microsecunde\n";
?>

Nu as folosi time() care e in secunde.

Daca am raspuns bine vreau sa dezvolt putin problema (intalnita la un countdown in flash raspandit pe net dar nefinalizat... pe asta am scos primul banut pe primul flash furat ca eram bata in flash):

Avem un countdown in flash care isi ia dintr-un php data si ora la care sa se opreasca si zice "Mai sunt 5 zile 3 ore... etc". Php-ul suna cam asa:


<?php echo "&time=" . time();?>
&year=2008
&month=4
&day=1
&hour=0
&min=0
?>

pentru 1 aprilie.

In Flash am folosit conform sursei originale:

...
server = new LoadVars();
server.onLoad = function(ok) {
if (!ok) {
return trace("Server error! Unable to obtain date from server");
}
counter.onEnterFrame = countdown;
counter._visible = true;
this.time = Number(this.time)*1000-getTimer();
};
var testDate = new Date();
server.load("gettime.php");
counter._visible = false;

In Internet explorer 6 daca dau F5 se reporneste counterul si nu e bine.

Ce am putea face sa functioneze corect in IE?

EDIT scriam kile de text, am raspuns 2. Merge intrebarea?

Link to comment
Share on other sites

Si deci solutia cu numerele superprime :|. Nu exista de 9 cifre.

Scriptul urmator va afisa numerele de 2,3, 4... 8 cifre care sunt superprime. Lucrez in php ca-l stiu mai bine.

<?php
set_time_limit(5);
$timp0=microtime(1);
function eprim($a){
$prim=1;
for($i=2;$i<=sqrt($a);$i++)
if (!($a%$i)) $prim=0;
return $prim;
};
$ar[1]=array(2,3,5,7);
for ($i=2;$i<=9;$i++)
foreach($ar[$i-1] as $nr)
for($j=0;$j<10;$j++)
if(eprim($nr*10+$j)) $ar[$i][]=$nr*10+$j;
echo "<pre>";
print_r($ar);
$timp1=microtime(1);
echo "</pre>";
echo $timp1-$timp0;
?>

Sa punem si outputul daca tot...:

Array
(
[1] => Array
(
[0] => 2
[1] => 3
[2] => 5
[3] => 7
)

[2] => Array
(
[0] => 23
[1] => 29
[2] => 31
[3] => 37
[4] => 53
[5] => 59
[6] => 71
[7] => 73
[8] => 79
)

[3] => Array
(
[0] => 233
[1] => 239
[2] => 293
[3] => 311
[4] => 313
[5] => 317
[6] => 373
[7] => 379
[8] => 593
[9] => 599
[10] => 719
[11] => 733
[12] => 739
[13] => 797
)

[4] => Array
(
[0] => 2333
[1] => 2339
[2] => 2393
[3] => 2399
[4] => 2939
[5] => 3119
[6] => 3137
[7] => 3733
[8] => 3739
[9] => 3793
[10] => 3797
[11] => 5939
[12] => 7193
[13] => 7331
[14] => 7333
[15] => 7393
)

[5] => Array
(
[0] => 23333
[1] => 23339
[2] => 23399
[3] => 23993
[4] => 29399
[5] => 31193
[6] => 31379
[7] => 37337
[8] => 37339
[9] => 37397
[10] => 59393
[11] => 59399
[12] => 71933
[13] => 73331
[14] => 73939
)

[6] => Array
(
[0] => 233993
[1] => 239933
[2] => 293999
[3] => 373379
[4] => 373393
[5] => 593933
[6] => 593993
[7] => 719333
[8] => 739391
[9] => 739393
[10] => 739397
[11] => 739399
)

[7] => Array
(
[0] => 2339933
[1] => 2399333
[2] => 2939999
[3] => 3733799
[4] => 5939333
[5] => 7393913
[6] => 7393931
[7] => 7393933
)

[8] => Array
(
[0] => 23399339
[1] => 29399999
[2] => 37337999
[3] => 59393339
[4] => 73939133
)

)

0.904978990555

Scuze daca e prea lung.

Multumit phreak?

Acum revenim la problema cu (r^a mod p)^b mod p = (r^b mod p)^a mod p ?...

Sa vedem macar la ce se foloseste? :)

Link to comment
Share on other sites

e mai grea problema, dracu stie cine foloseste.

Da-ne un indiciu: e vorba 1) de informatica? 2) de circuite, automatica, microdealea? sau 3) de matematica, algebra, inelul claselor de resturi?

(btw un pic de offtopic dar ontopic am vazut o problema prin topicul asta: interschimbarea corecta a 2 numere fara variabila auxiliara, pentru prevenirea depasirilor evitam adunarile si scaderile si se face simplu binar: a=a xor b; b=a xor b; a=a xor b; )

Link to comment
Share on other sites

pai nu prea am ce indicii sa va dau. decat sa va spun ce e

Este vorba de reformulare a teoriei mici a lui fermat.

http://en.wikipedia.org/wiki/Fermat's_little_theorem

http://ro.wikipedia.org/wiki/Mica_teorem%C4%83_a_lui_Fermat

Acum aflati voi la ce se foloseste. Nu e chiar greu.

Alt hint. Domeniu: Securitate.

LE:

Si daca cauti security in linkuri gasesti pe acolo detalii. Ma asteptam sa stie mai repede careva oricum. Si cum n-ati stiut sa povestim putin:

Deci teoria aia care a zis-o Fermat e asa:

Daca p este numar prim, orice numar ridicat la puterea p-1 se divide prin p.

Ideea e ca Fermat asta nici nu a reusit s-o demonstreze dar ma rog.. e si el cu inventivitatea pe acolo.

Si formula asta e o urmare a teoremei lui.

Se foloseste la RSA care e bun atat pentru public-key criptografy cat si pentru encriptie:

Sa luam un exemplu de encriptie:

(r^a mod p)^b mod p = (r^b mod p)^a mod p .... ziceam

Utilizatorul A si B trebuie sa comunice criptat fara ca altii care ar asculta convorbirea sa stie ce se vorbeste

Se foloseste un r si un p standard asupra caruia utilizatori cad de acord.

pas1:

A: genereaza un numar aleator mare a

B: genereaza un numar aleator mare b

pas2:

A: calculeaza x=r^a mod p

B: calculeaza y=r^b mod p

pas3:

A: trimite x lui B si primeste y

B: trimite y lui A si primeste x

pas3:

A: calculeaza k1=y^a mod p (adica k1=(r^b mod p)^a mod p)

B: calculeaza k2=x^b mod p (adica k2=(r^a mod p)^b mod p)

k1=k2 si asta este cheia cu care se vor cripta/decripta mesajele in continuare in discutia lor.

Ea nu este vizibila altor utilizatori care ar putea intercepta traficul.

Exemplul nostru:

r=2

p=113

pas1:

A genereaza 10

B genereaza 8

pas2:

A calculeaza x = 2^10 mod 113 = 1024 mod 113 = 7

B calculeaza y = 2^8 mod 113 = 256 mod 113 = 30

pas3:

se trimit valorile intre utilizatori

pas4

A calculeaza k1 = y^10 mod 113 = 30^10 mod 113 = 106

B calculeaza k2 = x^8 mod 113 = 7^8 mod 113 = 106

Si 106 e folosit sa se cripteze mai departe traficul

Se presupune ca cineva poate sa intercepteze traficul. El va vedea x adica 7, y adica 30 si va stii standardul r=2 si p=113. Din aceste date nu se poate creea cheia 106.

Pentru valorile de exemplu, se poate prin forcebrute foarte simplu. In practica se foloseste p,a si b numare pe 1024 biti sau mai mari.

Link to comment
Share on other sites

timpul necesar era 0.1 secunde in problema initiala :lol: . N-am inteles tot ce-ai facut tu acolo cu forurile alea . Tu cand gaseai un element in vector la care este adauat j si este prim , il bagai in vector. Faza e ca sunt mai multe elemente j la care merge chestia asta . nu stiu cum ti-a dat rezultatul final , o sa ma mai uit mai tarziu dar lasa asa :). Is fericit ca macar am inviat topicu ^_^

Link to comment
Share on other sites

timpul necesar era 0.1 secunde in problema initiala :lol: . N-am inteles tot ce-ai facut tu acolo cu forurile alea . Tu cand gaseai un element in vector la care este adauat j si este prim , il bagai in vector. Faza e ca sunt mai multe elemente j la care merge chestia asta . nu stiu cum ti-a dat rezultatul final , o sa ma mai uit mai tarziu dar lasa asa :). Is fericit ca macar am inviat topicu ^_^

Legat de faza cu "n-am intelesce-ai facut tu acolo" :)) mi se intampla cam des. Nu prea codez user-frendly, si pe langa asta mai am si metode ciudate.

Pai eu acolo am un vector de vectori. am vectorul $ar[1] initial care contine 4 elemente. apoi vectorul $ar[2] care e construit pe baza lui $ar[1]. Adaug la fiecare cate o cifra, il testez si il inserez in $ar[2] si asa mai departe. Daca aici adaugam numai 1, 3, 7 sau 9 era mai bine. Nu ai zis nimic de optimizari asa ca n-am facut.

Ma indoiesc sa nu fie corect. M-a mirat si pe mine secunda care a trecut dar am presupus ca e de la calculul daca e numar prim al numerelor mari.

Si nu stiu daca l-ai reinviat cat timp nu exista o intrebare curenta...

Link to comment
Share on other sites

timpul necesar era 0.1 secunde in problema initiala :lol: . N-am inteles tot ce-ai facut tu acolo cu forurile alea . Tu cand gaseai un element in vector la care este adauat j si este prim , il bagai in vector. Faza e ca sunt mai multe elemente j la care merge chestia asta . nu stiu cum ti-a dat rezultatul final , o sa ma mai uit mai tarziu dar lasa asa :). Is fericit ca macar am inviat topicu ^_^

Legat de faza cu "n-am intelesce-ai facut tu acolo" :)) mi se intampla cam des. Nu prea codez user-frendly, si pe langa asta mai am si metode ciudate.

Pai eu acolo am un vector de vectori. am vectorul $ar[1] initial care contine 4 elemente. apoi vectorul $ar[2] care e construit pe baza lui $ar[1]. Adaug la fiecare cate o cifra, il testez si il inserez in $ar[2] si asa mai departe. Daca aici adaugam numai 1, 3, 7 sau 9 era mai bine. Nu ai zis nimic de optimizari asa ca n-am facut.

Ma indoiesc sa nu fie corect. M-a mirat si pe mine secunda care a trecut dar am presupus ca e de la calculul daca e numar prim al numerelor mari.

Si nu stiu daca l-ai reinviat cat timp nu exista o intrebare curenta...

gata, am inteles :) . Buna ideea , eu nu intelegeam ca nu prea stiu php si-i destul de stresant cu $ in fata fiecarii variabile :P

Link to comment
Share on other sites

Asta era raspunsul:

personal as baga un alt php (sa complic putin sa nu modific php-ul initial)


<? $time_start = microtime_float();

include "phpulmeu.php";

$time_end = microtime_float();
$time = $time_end - $time_start;
echo "Rulat in $time microsecunde\n";
?>

Nu as folosi time() care e in secunde.

Chiar trebuie sa postez raspunsul pentru fiecare in parte? Era tot pe pagina dinainte impreuna cu intrebarea mea si in acelasi post. N-are sens sa repostez.

Continuarea postului era intrebarea mea pt urmatorul, sub o forma mai lunga si ca un apropo la time().

EDIT bun, am continuat prea repede si parea ca rezolvam ceva acolo: Hai sa repet intrebarea. Pe scurt avem un countdown timer ce afiseaza cate zile/ore/minute sunt pana la un eveniment. Foloseste un php din care citeste ora cu time(). In Mozila merge ok dar in IE daca dai refresh dupa 10 minute el nu iti scade cele 10 minute ci o ia de la capat. Intrebarea e cum se poate rezolva aceasta problema.

Link to comment
Share on other sites

mda

pentru php-ul initial trebuie bagate niste headere ca altfel il tine in cache

un exemplu ar fi:

header("Cache-Control: no-store, no-cache, must-revalidate");

ce intrebari sa va mai pun?...

Intr-adevar e de la cache si chiar nu stiam de cache control.

Solutia folosita de mine la vremea aia era "server.load("gettime.php?uniqueid="+testDate.getTime());" unde uniqueid era doar o pentru a schimba adresa php-ului spre a pacali browserul.

...Intreaba, intreaba!

Link to comment
Share on other sites

Vad ca drealecs nu mai are de gand sa intrebe,asa ca pun eu urmatoarea intrebare.

Aflarea numarului de atribute în cazul cînd se afiseaza erorile în browser.Sa zicem ca exista urmatoarea vulnerabilitate în aplicatia-web ce utilizeaza SGBD MySQL:

http://127.0.0.1/inj.php?id=5'

Cum se identifica numarul de atribute si apoi cum se afla tipul lor?

Link to comment
Share on other sites

eu nu inteleg ce e numarul de atribute

Înainte de a efectua injectarea UNION SELECT ar trebui sa afli numarul de atribute în cererea SQL, tipul fiecarui atribut si denumirea unor tabele de sistem ceea ce se considera greu de realizat în cazurile cînd nu se afiseaza erorile în browser. Cererea UNION SELECT trebuie sa contina acelasi numar de atribute, iar atributele trebuie sa fie de acelasi tip.

Sper ca ai prins ideea...

Daca nu stie nimeni,pun eu rezolvarea si pun apoi alta intrebare..

Link to comment
Share on other sites

Reinvii acest thread deoarece e unul din cele mai educative de pe rst si e un joc folositor nu de genul 'inchisoarea' :/.

O noua intrebare.

Avem o pagina abc.php si una 123.php,iar noi trebuie sa accesam pagina 123.php prin intermediul paginii abc.php.Folosind telnet,cum putem accesa pagina 123.php avand ca referal pagina abc.php ?

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.




×
×
  • Create New...