Izgleda da je karlos na dobrom putu. Necu se praviti da ovo razumem, ukljucio sam se u zadatak iz radoznalosti. Ipak, izgleda da je ovo veoma opsirna tema sa dosta opcija i mnogo mozganja:
[Link mogu videti samo ulogovani korisnici] i [Link mogu videti samo ulogovani korisnici]
Kao i ove dve veoma interesantne teme:
[Link mogu videti samo ulogovani korisnici]
[Link mogu videti samo ulogovani korisnici]
Koliko vidim ovo je jedan od brzih algoritama: [Link mogu videti samo ulogovani korisnici]
(coveka znam kao autora izvanrednog djbdns softvera)
A evo i skripte (da skripte ) koju sam ja uspeo da sastavim. Napisana je u awk-u, i za 100.000 brojeva joj treba nesto vise od 14 sec na Celeronu, dok za milion brojeva "krlja" oko 7 minuta. Nisam isprobavao koje je vreme kad bi se prebacilo u C, ali ocekujem dobro poboljsanje. Mozda ti neki deo nje bude od pomoci (sintaksa je slicna C-u):
- function delioc(n){
- maxfaktor=1
- minbroj=1
- for(i=1; i<n; i++){
- for(j=1; j <= sqrt(i); j++){
- if(i % j == 0){
- a[b++]=j
- j==sqrt(i)?"":a[b++]=i/j
- }
- }
- #printf("Delioci za %d su: \n", i)
- #for (k in a) { print a[k] }; printf("Broj delioca: %d\n", b); print "\n"
- if(maxfaktor<b && minbroj<i){
- maxfaktor=b
- minbroj=i;
- }delete a;b=0
-
- }
-
- }
- BEGIN{ delioc(ARGV[1])
- print "Minbroj: ", minbroj, " i Maxfaktor: ", maxfaktor
- }
Postoje neke varijante izuzimanja odredjenih brojeva i slicno, ali to vec prevazilazi moju zelju za matematikom. Sve najbolje i nadam se da ce ti neki od ovih linkova pomoci.
|