using System;
namespace PerfectNumbers
{
class Program
{
static int CalcSumOfDivisors( int n)
{
int sum = 0 ;
for ( int i = 1 ; i < n; i++ )
{
if ( n % i == 0 )
{
sum += i;
}
}
return sum;
}
static void PrintAllPerfectNumbers( int n)
{
for ( int c = 2 ; c <= n; c++ )
{
if ( CalcSumOfDivisors( c) == c)
{
Console.WriteLine ( c) ;
}
}
}
static void PrintAllAmicableNumbersPairs( int n)
{
for ( int i = 2 ; i <= n; i++ )
{
int sumOfDivisorsI = CalcSumOfDivisors( i) ;
if ( CalcSumOfDivisors( sumOfDivisorsI) == i && sumOfDivisorsI != i && i < sumOfDivisorsI)
{
Console.WriteLine ( "({0}, {1})" , i, sumOfDivisorsI) ;
}
}
}
static void Main( string[ ] args)
{
Console.WriteLine ( "Enter a number n: " ) ;
int inputNumber = int .Parse ( Console.ReadLine ( ) ) ;
Console.WriteLine ( "All perfect numbers in the range [2; {0}]:" , inputNumber) ;
PrintAllPerfectNumbers( inputNumber) ;
Console.WriteLine ( "All friendly numbers in the range [2; {0}]:" , inputNumber) ;
PrintAllAmicableNumbersPairs( inputNumber) ;
}
}
}
dXNpbmcgU3lzdGVtOwoKbmFtZXNwYWNlIFBlcmZlY3ROdW1iZXJzCnsKICAgIGNsYXNzIFByb2dyYW0KICAgIHsKICAgICAgICBzdGF0aWMgaW50IENhbGNTdW1PZkRpdmlzb3JzKGludCBuKQogICAgICAgIHsKICAgICAgICAgICAgaW50IHN1bSA9IDA7CiAgICAgICAgICAgIGZvciAoaW50IGkgPSAxOyBpIDwgbjsgaSsrKQogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBpZiAobiAlIGkgPT0gMCkKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBzdW0gKz0gaTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgICAgICByZXR1cm4gc3VtOwogICAgICAgIH0KICAgICAgICAKICAgICAgICBzdGF0aWMgdm9pZCBQcmludEFsbFBlcmZlY3ROdW1iZXJzKGludCBuKQogICAgICAgIHsKICAgICAgICAgICAgZm9yIChpbnQgYyA9IDI7IGMgPD0gbjsgYysrKQogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBpZiAoQ2FsY1N1bU9mRGl2aXNvcnMoYykgPT0gYykKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBDb25zb2xlLldyaXRlTGluZShjKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgc3RhdGljIHZvaWQgUHJpbnRBbGxBbWljYWJsZU51bWJlcnNQYWlycyhpbnQgbikKICAgICAgICB7CiAgICAgICAgICAgIGZvciAoaW50IGkgPSAyOyBpIDw9IG47IGkrKykKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgaW50IHN1bU9mRGl2aXNvcnNJID0gQ2FsY1N1bU9mRGl2aXNvcnMoaSk7CiAgICAgICAgICAgICAgICBpZiAoQ2FsY1N1bU9mRGl2aXNvcnMoc3VtT2ZEaXZpc29yc0kpID09IGkgJiYgc3VtT2ZEaXZpc29yc0kgIT0gaSAmJiBpIDwgc3VtT2ZEaXZpc29yc0kpCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgQ29uc29sZS5Xcml0ZUxpbmUoIih7MH0sIHsxfSkiLCBpLCBzdW1PZkRpdmlzb3JzSSk7CiAgICAgICAgICAgICAgICB9ICAKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgc3RhdGljIHZvaWQgTWFpbihzdHJpbmdbXSBhcmdzKQogICAgICAgIHsKICAgICAgICAgICAgQ29uc29sZS5Xcml0ZUxpbmUoIkVudGVyIGEgbnVtYmVyIG46ICIpOwogICAgICAgICAgICBpbnQgaW5wdXROdW1iZXIgPSBpbnQuUGFyc2UoQ29uc29sZS5SZWFkTGluZSgpKTsKICAgICAgICAgICAgQ29uc29sZS5Xcml0ZUxpbmUoIkFsbCBwZXJmZWN0IG51bWJlcnMgaW4gdGhlIHJhbmdlIFsyOyB7MH1dOiIsIGlucHV0TnVtYmVyKTsKICAgICAgICAgICAgUHJpbnRBbGxQZXJmZWN0TnVtYmVycyhpbnB1dE51bWJlcik7CiAgICAgICAgICAgIENvbnNvbGUuV3JpdGVMaW5lKCJBbGwgZnJpZW5kbHkgbnVtYmVycyBpbiB0aGUgcmFuZ2UgWzI7IHswfV06IiwgaW5wdXROdW1iZXIpOwogICAgICAgICAgICBQcmludEFsbEFtaWNhYmxlTnVtYmVyc1BhaXJzKGlucHV0TnVtYmVyKTsKICAgICAgICB9CiAgICB9Cn0K