why it’s giving wrong answer…#include<stdio.h>

#include<math.h>

int main()

{

int i;

long int n,t,sum;

scanf("%ld",&t);

while(t–)

{

sum=0;

scanf("%ld",&n);

for(i=2;i<=sqrt(n);i++)

{

if(n%i==0)

{

if(i==n/i)

sum+=i;

else

sum+=i+(n/i);

}

}

sum+=1;

printf("%ld",sum);

}

return 0;

}

This loop is not correct: for(i=2;i<=sqrt(n);i++)

it should have been for(i=1;i<=n/2;i++)

Check the input example: number 20 has 5 proper divisors: 1, 2, 4, 5, 10, and the divisor summation is: 1 + 2 + 4 + 5 + 10 = 22. for more clarification!

@alpit_93 I don’t know why you have complicated such a simple problem…think simple… proper divisors are upto n/2

- correct the loop;…
- simple
`if(n%i==0)`

sum+=i;

this will do the task

…

btw happy coding enjoy

`

Initialize sum=1 and do the sum=sum-n at printf and use ‘\n’ to break the line.

If you want the sum of proper divisors, then set sum = 1 and start loop at i = 2.

If you want the sum of all divisors, then set sum = 0 and start the loop at i = 1.

Looks like, you have mixed up these two.

And may be, your printf prints the answer to all test cases in a single line, whereas the question demands the answers to each test case on a separate line. Try changing your printf to `printf("%ld\n",sum);`

and check whether, that accepts your answer.