12.39.1 Za učitani broj izračunati sumu njegovih netrivijalnih djelilaca.
Opis rješenja: Podsjetimo se da je trivijalni djelilac je 1 i taj broj. Rješenje se svodi na provjeru djelioca od 2 do polovine broja (n DIV 1). Djelilac može biti samo do polovine vrijednosti broja te se provjera izvodi do n/2.
Tabela 8.15. Suma djelilaca broja
Listing programa |
Ekran |
Opis |
PROGRAM SumaDjelilac; |
|
Naslov programa |
VAR |
|
Promjenljive |
i, s, n: INTEGER; |
|
|
BEGIN |
|
|
WRITELN('Suma djelilaca'); |
Suma djelilaca |
Naslov programa |
WRITE('Do broja '); |
Do broja |
|
READLN(n); |
10 |
|
s := 0; |
|
Početna vrijednost sume s |
FOR i :=2 TO n DIV 2 DO |
|
Promjena j od 2 do n/2 |
IF n MOD i = 0 THEN s:=s+i; |
|
Djelilac ? |
WRITELN ('Suma djelilaca =', s); |
7 |
Ispis sume |
END. |
|
Kraj programa |
Tabela 8.15. Test primjeri
test |
I |
II |
III |
I V |
V |
VI |
VII |
Broj |
6 |
10 |
24 |
64 |
100 |
115 |
999 |
Suma djelilaca |
5 |
7 |
35 |
62 |
116 |
28 |
520 |
Opis rješenja: Imamo n sabiraka, i formiramo sumu od sabiraka. Predznak pri sabiranju se posebno izračunava svakom prolazu (znak).
Listing programa:
PROGRAM SumaDjelilac;
USES
WinCrt;VAR
i, s, n: INTEGER;
BEGIN
WRITELN('Suma djelilaca');
WRITE('Do broja ');
READLN(n);
s := 0;
FOR i :=2 TO n DIV 2 DO
IF n MOD i = 0 THEN s:=s+i;
WRITELN ('Suma djelilaca =', s);
END.
Index
|