/***************************************************************** * Ovo delo zaštićeno je licencom Creative Commons CC BY-NC-ND 4.0 * (Attribution-NonCommercial-NoDerivatives 4.0 International License). * Za detalje pogledati LICENSE.TXT * Autori: Milena Vujosevic Janicic, Jovana Kovacevic, * Danijela Simic, Andjelka Zecevic, Aleksandra Kocic ******************************************************************/ #include <stdio.h> /* Funkcija racuna zbir delilaca broja x. */ int zbir_delilaca(int x) { int i; /* Inicijalizacija zbira na 0. */ int zbir = 0; /* Svaki broj i izmedju 1 i sqrt(x) koji deli broj x se dodaje zbiru. Ako je u pitanju broj za koji vazi da je i*i jednako x, onda se dodaje samo vrednost i. U suprotnom se pored vrednosti i dodaje i x/i. Na primer, za x=6, kada je i=2, dodaju se i 2 i 6/2 = 3, a za x = 4, kada je i=2, dodaje se samo 2. */ for (i = 1; i * i <= x; i++) { if (x % i == 0) { zbir += i; if (i != x / i) zbir += x / i; } } /* Povratna vrednost funkcije je dobijeni zbir. */ return zbir; } int main() { /* Deklaracija potrebnih promenljivih. */ int k, i; /* Ucitavanje broja k. */ printf("Unesite broj k:"); scanf("%d", &k); /* Provera ispravnosti ulaznih podataka. */ if (k <= 0) { printf("Greska: neispravan unos.\n"); return 1; } /* Ispis zbira delilaca za svaki broj od 1 do k. */ for (i = 1; i <= k; i++) printf("%d ", zbir_delilaca(i)); printf("\n"); return 0; }