VMoze 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;
}
mkoliko prolazi?jel ima WA možda?
Vprodju prva 4 a na ostalim istekne vrijeme
mnapiš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
mdo 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š
Vuradio sam kako si rekao, ali sad nece ni jedan da prodje :-(
hMislim 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.
mprobaj ovu ideju.bolja je ja sam svoju na papiru napiso u 5 minuta.nisam gledo ograničenja