#include /* Program pocitajici nejmensi spolecny nasobek. Program * predpoklada, ze na vstup prichazi kladna cisla, toto * nekontroluje. */ int main(void) { int pocet; // pocet cisel scanf("%d", &pocet); // nacteni poctu cisel int p[pocet]; // pole dane velikosti for (int i = 0; i < pocet; ++i) scanf("%d", &p[i]); // nacteni cisel printf("nsn cisel je == "); int nsn = 1; // zaciname s nsn rovnou 1 int d = 2; // timto cislem zkousime podelit ostatni int opakovat = 1; // zda mame/nemame zkouset hledat dalsi cisla, kterymi by slo podelit nejake cislo ze vstupu while (opakovat) { // dokud mame zkouset hledat cislo opakovat = 0; // predpokladame, ze uz hledat dal nemame int vynasobit_nsn; // indikuje, zda se nam podarilo cislem v promenne d podelit nejake cislo ze vstupu do { // dokud se dari aspon jedno cislo podelit, delime danym d vynasobit_nsn = 0; // predpokladame, ze zadne cislo d podelit (beze zbytku) neslo for (int i = 0; i < pocet; ++i) { // pres vsechny cisla ze vstupu if (p[i] % d == 0) { // pokud se podari bez zbytku podelit, p[i] /= d; // podelime ++vynasobit_nsn; // nastavime, ze se podarilo podelit } if (p[i] > 1) // pokud aspon jedno cislo je jeste > 1, budeme hledat ++opakovat; // dalsi cislo, kterym ho podelit } if (vynasobit_nsn) // pokud dane d nejake cislo podelilo, nsn vynasobime d nsn *= d; } while(vynasobit_nsn); ++d; // zvysime d } printf("%d\n", nsn); // vypiseme nsn return 0; }