class Euler1 {
public long calculate(long limit, long number){
if (number > limit) return 0L;
long count = limit / number;
return number * (count + 1L) * count / 2L;
}
public long sum(long[] data, int index, long combination, long limit, int level){
long result = 0L;
if (combination == 1L);
else{
if ((level & 1L) == 1L)
result += calculate(limit, combination);
else
result -= calculate(limit, combination);
}
if (level > data.length)
return result;
else{
for (; index < data.length; index++)
result += sum(data, index + 1, combination * data[index], limit, level + 1);
}
return result;
}
public static void main
(String[] args
) { Euler1 e = new Euler1();
System.
out.
println(e.
sum(new long[]{2L, 3L, 5L, 7L, 11L, 13L
},
0, 1L, 999999L,
0)); System.
out.
println(e.
sum(new long[]{2L, 3L, 5L, 7L, 11L, 13L
},
0, 1L, 9999999L,
0)); System.
out.
println(e.
sum(new long[]{2L, 3L, 5L, 7L, 11L, 13L
},
0, 1L, 99999999L,
0)); System.
out.
println(e.
sum(new long[]{2L, 3L, 5L, 7L, 11L, 13L
},
0, 1L, 999999999L,
0));
System.
out.
println(e.
sum(new long[]{2L, 3L, 5L, 7L, 11L, 13L, 17L
},
0, 1L, 999999L,
0)); System.
out.
println(e.
sum(new long[]{2L, 3L, 5L, 7L, 11L, 13L, 17L
},
0, 1L, 9999999L,
0)); System.
out.
println(e.
sum(new long[]{2L, 3L, 5L, 7L, 11L, 13L, 17L
},
0, 1L, 99999999L,
0)); System.
out.
println(e.
sum(new long[]{2L, 3L, 5L, 7L, 11L, 13L, 17L
},
0, 1L, 999999999L,
0));
System.
out.
println(e.
sum(new long[]{2L, 3L, 5L, 7L, 11L, 13L, 17L, 19L
},
0, 1L, 999999L,
0)); System.
out.
println(e.
sum(new long[]{2L, 3L, 5L, 7L, 11L, 13L, 17L, 19L
},
0, 1L, 9999999L,
0)); System.
out.
println(e.
sum(new long[]{2L, 3L, 5L, 7L, 11L, 13L, 17L, 19L
},
0, 1L, 99999999L,
0)); System.
out.
println(e.
sum(new long[]{2L, 3L, 5L, 7L, 11L, 13L, 17L, 19L
},
0, 1L, 999999999L,
0)); }
}
Y2xhc3MgRXVsZXIxIHsKICAgIHB1YmxpYyBsb25nIGNhbGN1bGF0ZShsb25nIGxpbWl0LCBsb25nIG51bWJlcil7CiAgICAgICAgaWYgKG51bWJlciA+IGxpbWl0KSByZXR1cm4gMEw7CiAgICAgICAgCiAgICAgICAgbG9uZyBjb3VudCA9IGxpbWl0IC8gbnVtYmVyOwogICAgICAgIHJldHVybiBudW1iZXIgKiAoY291bnQgKyAxTCkgKiBjb3VudCAvIDJMOwogICAgfQoKICAgIHB1YmxpYyBsb25nIHN1bShsb25nW10gZGF0YSwgaW50IGluZGV4LCBsb25nIGNvbWJpbmF0aW9uLCBsb25nIGxpbWl0LCBpbnQgbGV2ZWwpewogICAgICAgIGxvbmcgcmVzdWx0ID0gMEw7CiAgICAgICAgaWYgKGNvbWJpbmF0aW9uID09IDFMKTsKICAgICAgICBlbHNlewogICAgICAgICAgICBpZiAoKGxldmVsICYgMUwpID09IDFMKQogICAgICAgICAgICAgICAgcmVzdWx0ICs9IGNhbGN1bGF0ZShsaW1pdCwgY29tYmluYXRpb24pOwogICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICByZXN1bHQgLT0gY2FsY3VsYXRlKGxpbWl0LCBjb21iaW5hdGlvbik7CiAgICAgICAgfQoKICAgICAgICBpZiAobGV2ZWwgPiBkYXRhLmxlbmd0aCkKICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICAgICBlbHNlewogICAgICAgICAgICBmb3IgKDsgaW5kZXggPCBkYXRhLmxlbmd0aDsgaW5kZXgrKykKICAgICAgICAgICAgICAgIHJlc3VsdCArPSBzdW0oZGF0YSwgaW5kZXggKyAxLCBjb21iaW5hdGlvbiAqIGRhdGFbaW5kZXhdLCBsaW1pdCwgbGV2ZWwgKyAxKTsKICAgICAgICB9CiAgICAgICAgCiAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgIH0KICAgIAogICAgcHVibGljIHN0YXRpYyB2b2lkIG1haW4oU3RyaW5nW10gYXJncykgewogICAgICAgIEV1bGVyMSBlID0gbmV3IEV1bGVyMSgpOwoKICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4oZS5zdW0obmV3IGxvbmdbXXsyTCwgM0wsIDVMLCA3TCwgMTFMLCAxM0x9LCAwLCAxTCwgOTk5OTk5TCwgMCkpOwogICAgICAgIFN5c3RlbS5vdXQucHJpbnRsbihlLnN1bShuZXcgbG9uZ1tdezJMLCAzTCwgNUwsIDdMLCAxMUwsIDEzTH0sIDAsIDFMLCA5OTk5OTk5TCwgMCkpOwogICAgICAgIFN5c3RlbS5vdXQucHJpbnRsbihlLnN1bShuZXcgbG9uZ1tdezJMLCAzTCwgNUwsIDdMLCAxMUwsIDEzTH0sIDAsIDFMLCA5OTk5OTk5OUwsIDApKTsKICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4oZS5zdW0obmV3IGxvbmdbXXsyTCwgM0wsIDVMLCA3TCwgMTFMLCAxM0x9LCAwLCAxTCwgOTk5OTk5OTk5TCwgMCkpOwoKICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4oZS5zdW0obmV3IGxvbmdbXXsyTCwgM0wsIDVMLCA3TCwgMTFMLCAxM0wsIDE3TH0sIDAsIDFMLCA5OTk5OTlMLCAwKSk7CiAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKGUuc3VtKG5ldyBsb25nW117MkwsIDNMLCA1TCwgN0wsIDExTCwgMTNMLCAxN0x9LCAwLCAxTCwgOTk5OTk5OUwsIDApKTsKICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4oZS5zdW0obmV3IGxvbmdbXXsyTCwgM0wsIDVMLCA3TCwgMTFMLCAxM0wsIDE3TH0sIDAsIDFMLCA5OTk5OTk5OUwsIDApKTsKICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4oZS5zdW0obmV3IGxvbmdbXXsyTCwgM0wsIDVMLCA3TCwgMTFMLCAxM0wsIDE3TH0sIDAsIDFMLCA5OTk5OTk5OTlMLCAwKSk7CgogICAgICAgIFN5c3RlbS5vdXQucHJpbnRsbihlLnN1bShuZXcgbG9uZ1tdezJMLCAzTCwgNUwsIDdMLCAxMUwsIDEzTCwgMTdMLCAxOUx9LCAwLCAxTCwgOTk5OTk5TCwgMCkpOwogICAgICAgIFN5c3RlbS5vdXQucHJpbnRsbihlLnN1bShuZXcgbG9uZ1tdezJMLCAzTCwgNUwsIDdMLCAxMUwsIDEzTCwgMTdMLCAxOUx9LCAwLCAxTCwgOTk5OTk5OUwsIDApKTsKICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4oZS5zdW0obmV3IGxvbmdbXXsyTCwgM0wsIDVMLCA3TCwgMTFMLCAxM0wsIDE3TCwgMTlMfSwgMCwgMUwsIDk5OTk5OTk5TCwgMCkpOwogICAgICAgIFN5c3RlbS5vdXQucHJpbnRsbihlLnN1bShuZXcgbG9uZ1tdezJMLCAzTCwgNUwsIDdMLCAxMUwsIDEzTCwgMTdMLCAxOUx9LCAwLCAxTCwgOTk5OTk5OTk5TCwgMCkpOwogICAgfQp9