public static void Main()
Console.WriteLine(EilerCount(64, 3));
public static int EilerCount(int number, int minElement) {
if (number <= minElement) {
int maxFractionCount = number / minElement;
for (int i = 1; i < maxFractionCount ; ++i) {
result += subEilerCount(number, i, minElement);
public static int subEilerCount(int number, int fractionCount, int minElement) {
if (number < minElement) {
throw new ArgumentOutOfRangeException("Progression should be continued");
if (fractionCount == 1) {
for (int i = minElement; i < number - i * (fractionCount - 1) ; ++i) {
result += subEilerCount(number - i, fractionCount - 1, i);