# divide a number into parts so the resulting sum is equal to the input

I am trying to use this method but I keep getting an error "Extension method must be defined in a non-generic static class"
``````public static IEnumerable<int> PartitionMeInto(this int value, int count)
{
if (count <= 0) throw new ArgumentException("count must be greater than zero.", "count");
var result = new int[count];

int runningTotal = 0;
for (int i = 0; i < count; i++)
{
var remainder = value - runningTotal;
var share = remainder > 0 ? remainder / (count - i) : 0;
result[i] = share;
runningTotal += share;
}

if (runningTotal < value) result[count - 1] += value - runningTotal;

return result;
}
``````
I call  it by
``````int value = numpulses;
var result = value.PartitionMeInto(25);
``````
LVL 6
###### Who is Participating?

RetiredCommented:
Extension methods must be in a static class as shown below. Try it this way.

``````
public static class MyExtensions
{
public static IEnumerable<int> PartitionMeInto(this int value, int count)
{
if (count <= 0) throw new ArgumentException("count must be greater than zero.", "count");
var result = new int[count];

int runningTotal = 0;
for (int i = 0; i < count; i++)
{
var remainder = value - runningTotal;
var share = remainder > 0 ? remainder / (count - i) : 0;
result[i] = share;
runningTotal += share;
}

if (runningTotal < value) result[count - 1] += value - runningTotal;

return result;
}
}
``````
0

Author Commented:
Thanks Fernando
0

RetiredCommented:
Not a problem r3nder, glad I was able to help.
0
Question has a verified solution.

Are you are experiencing a similar issue? Get a personalized answer when you ask a related question.

Have a better answer? Share it in a comment.