printЗанятие 1

printРазложение на множители, делители числа

Получение всех делителей числа
int n; // число, которое нужно разложить на множители
int divs[100]; // делители
int ndivs; // количество делителей

ndivs=0;
for(int i=1; i*i<=n; ++i)
{ if(n%i==0) divs[ndivs++]=i;
}
int k=ndivs-1;
if(divs[k]*divs[k]==n) k--;
for(;k>=0; --k)
  divs[ndivs++]=n/divs[k];
Разложение на простые множители
int n; // число, которое нужно разложить на множители
int divs[100]; // простые множители
int ndivs; // количество множителей
ndivs=0;
for(int i=2; i*i<=n; ++i)
{ while(n%i==0) 
  { divs[ndivs++]=i;
    n/=i;
  }
}
if(n>1) divs[ndivs++]=n;
loading