#include<stdio.h>

#include<conio.h>

void main()

{

int i,n;

clrscr(); //to clear the screen

printf(“Enter any number:”);

scanf(“%d”,&n);

printf(“nDivisors of %d are”,n);

for(i=1;i<n/2;++i)

if(n%i==0)

printf(” %d”,i);

getch(); //to stop the screen

}

You're missing a divisor! If the number is even, you'll always miss n/2. Change the conditional to

i <= n/2.

This algorithm is O(n) complexity

There is another method to calculate the divisors in O(sqrt(n)) complexity

vector d;

void genDivisors(int num){

d.clear();

int i=1;

for(;i*i<num;i++)

if(num%i==0) {d.push_back(i),d.push_back(num/i);}

if(i*i==num)d.push_back(i);

sort(d.begin(),d.end());

}

please sir explain this program