S-ar putea sa fie gresite sa aiba nevoie ca cate o mica ajustare , nu sunt verificate in compilator
Un algorithm bun foarte util pentru aflarea numerelor prime pana la 1.000.000 sau mai mult intr-un timp scurt este Ciurul lui Eratostene .
Puteti privi foarte usor cum genereaza numerele.
este vorba de 2 for-uri care merg din i in i
for(i=2 ; i<=(pana unde doriti) ; i++)
for(j=i+i ; j<=(coditia de sus);j=j+i)
ok[j]=1;
Este bine ca vectoru ok sa fie declarat BOOL pentru ca ocupa mai putina memorie ;)
Un alt algorithm util este cel de a calcula daca un nr este prim sau divizori sai :D ... Multa lume are metoda clasica pana la nr/2 ... Dar exista ceva mult mai rapid ceva gen for(i=2 ; i*i<=nr ; i++) si va puteti da seama cata munca economiseste aceasta conditie ( daca nu credeti puteti incerca).
Desigur puteti face unu mult mai rapid cu ajutorul lui Eratostene.
As putea sa va dau un sfat despre sirurile foarte mari de numere gen 935425746469 , il puteti scrie mai bine ca un sir de caractere char . Sirurile de caractere ocupa foarte putin spatiu decat un vector sau numar int . Ca sa manevrati usor acest lucru va puteti folosi de functiile Atoi (din caracter in int) sau Itoa(din int in caracter).
Niciun comentariu:
Trimiteți un comentariu