← Back to topics
Topic

delioci

V
Vidakovic
Moze li mi ko reci kako da ubrzam program za zadatak delioci? Evo koda
# include <iostream>
using namespace std;
int b,i,j,bd,m,broj;
main ()
{
cin>>b;
m=0;
for (i=1;i<=b;i++){
bd=1;
for (j=1;j<=(i/2);j++)
if ((i%j)==0) bd++;
if (bd>m) {m=bd;broj=i;}
}
cout<<broj<<endl;
cout<<m<<endl;

}
m
matteo123
koliko prolazi?jel ima WA možda?
V
Vidakovic
prodju prva 4 a na ostalim istekne vrijeme
m
matteo123
napiši na papiru brojeve od 4 do n (izmisli neki broj) i pogledaj koliko koji ima djelitelja.toliko za sada.ako ti neš nije jasno samo napiši šta i javit ću ti
m
matteo123
do sada sam se sjetio samo jedne ideje.
imaš 2 procedure.
1.prati ako je broj prost
2.koliko djelitelja ima neki broj
i onda počinješ program
imaš for petlju.
u njoj vrtiš brojeve od 4 do n zato što 1,2 i 3 su prosti i imaju 2 djelitelja ali 1 ima jednoga to nije dovoljno . ali je moguće da se u tesovima pojave 2 i 3 pa možeš stavit if prije fora.
sada idemo dalje.
provjeravaš ako je broj prost ako je onda ga preskoči.ako nije
onda pozovi proceduru koja gleda koliko djelitelja ima taj broj.i onda samo u ifu gledaš ako ima najviše djelitelja onda je taj neki broj (neka bude x) x=i; i djelitelji=2.procedura
(nazovi ju kako hoćeš) i to je to
PS.koristi scanf i printf jer su brži od cin i cout
PPS.javi ako ne kužiš
V
Vidakovic
uradio sam kako si rekao, ali sad nece ni jedan da prodje :-(
h
halil
Mislim da sa idejom kojom si krenuo nećeš prevazići problem T.L.E.Probaj sa drugom idejom:
Svaki prirodan broj se može na jedinsten način predstaviti u obliku
n = p1^a1 * p2^a2 *...* pk^ak
Broj delioca broja n jednak je (1+a1) * (1+a2) *...* (1+ak)
Da bi broj imao što više delioca, tada p1 mora biti štо manji (dakle p1=2), ...
I dođe se do zaključka da mogući prosti delioci broja n iz skupa {2,3,5,7,11,13,17,19,23}, za n <= 10^9.
Pozdrav.
m
matteo123
probaj ovu ideju.bolja je ja sam svoju na papiru napiso u 5 minuta.nisam gledo ograničenja