Proper divisors: Difference between revisions

m
m (Added Sidef)
Line 244:
 
=={{header|Ceylon}}==
<lang ceylon>shared void properDivisorsrun() {
 
function divisors(Integer int) =>
if(int <= 1)
if(int <= 1) then {} else (1..int / 2).filter((Integer element) => element.divides(int));
then {}
if(int <= 1) then {} else (1..int / 2).filter((Integer element) => element.divides(int));
for(i in 1..10) {
Line 255 ⟶ 257:
value start = 1;
value end = 20k;
value mostDivisors = (start..end)
value divisorCounts =
// map to 1->0, 2->1, ... 6->3, etc...
(start..end)
.map((Integer element) => element->divisors(element).size) ;
// group based on the number of divisors
.group((Integer->Integer element) => let(i->count = element) count)
value mostDivisors = (start..end)
// clean it up a bit
map {*divisorCounts}
.mapItems((Integer key, [<Integer->Integer>+] item) => item*.key)
.inverse()
// find the group with the most divisors
.max(byKey(byIncreasing(Integer.magnitude)));
print("the number(s) with the most divisors between ``start`` and ``end`` is/are:
Anonymous user