PDA

View Full Version : اعداد متحابه



aryaei2000
شنبه 30 خرداد 1388, 11:28 صبح
سلام
دوستان من یه برنامه برای تولید اعداد متحابه پیدا کردم.


using System;

class Program
{
public static int FastSum(int n)
{
int sum = 1;
int sqrt = (int)Math.Sqrt(n); for (int i = 2; i <= 1 + sqrt; i++)
if (n % i == 0) sum = sum + i + n / i;
return sum;
}
static void Main(string[] args)
{
DateTime st = DateTime.Now;
TimeSpan runTime;
int s1, s2;
for (int i = 1000000; i < 2000000; i++)
{
s1 = FastSum(i);
s2 = (s1 > i) ? FastSum(s1) : 0;
if (s2 == i)
Console.WriteLine("{0} <==> {1} {2}", i, s1,
(DateTime.Now - st).TotalSeconds);
}
DateTime et = DateTime.Now;
runTime = et - st;
Console.WriteLine("Run Time: " + runTime.TotalSeconds);
Console.WriteLine("Press enter to exit!");
Console.ReadLine();
}
}

اگر میشه برام تجزیه تحلیلش کنید ممنون.
تعریف اعداد متحابه
دو عدد را” متحابه” گوییم هرگاه مجموع مقسوم علیه های هر یک با دیگری برابر باشد. به عنوان مثال اعداد ۲۸۴ و ۲۲۰ را در نظر بگیرید مجموع مقسوم علیه های عدد ۲۸۴ برابر با عدد ۲۲۰ است و مجموع مقسوم علیه های عدد ۲۲۰ برابر با ۲۸۴ است.