C#算法

  1. 韩信点兵算法(3个人站一排余2,5个人站一排余3,7个人站一排余5)
static void Main(string[] args)
        {
            //33余2 55余3 77余5
            for(int i=0;i<1000;i++)
            {
                if(i%3==2&&i%5==3&&i%7==5)
                {
                    Console.WriteLine("总人数是{0}", i);
                }
            }
            Console.ReadKey();
}

   2.水仙花数:水仙花数是指一个 n 位正整数 ( n≥3 ),它的每个位上的数字的 n 次幂之和等于它本身。(例如:1^3 + 5^3+ 3^3 = 153)

  static void Main(string[] args)
        {
            //水仙花数1^3 + 5^3+ 3^3 = 153
 
            for (int i = 100; i < 1000; i++)
            {
                int bai = 0; int shi =  0; int ge = 0; int baiyushu = 0;
                bai =i/ 100;
                baiyushu = i % 100;
                shi = baiyushu / 10;
                ge = baiyushu % 10;
                if (i == bai * bai * bai + shi * shi * shi + ge * ge * ge)
                { Console.WriteLine("水仙花数:" + i ); }
            }
            Console.ReadKey();

        }

 3.相亲数

 

在数学中,有一些称为相亲相爱的数。真是所谓“你中有我,我中有你。”例如220和284,把220的全部约数(除掉220本身之外)统统都相加起来,其和就等于另一个数284;即  1+2+4+5+10+11+20+22+44+55+110=284

同样,把284的全部约数(除掉284本身)相加,其和等于220,即

1+2+4+71+142=220

 

     for (int i = 1; i < 10000; i++)
            {
                for (int j = 1; j < 10000-1;j++ )
                {
                    if(j==GetAllSum(i) && i==GetAllSum(j) &&i!=j)
                    {

                        Console.WriteLine("{0} 和{1} 是一对相亲数:",i,j);
                        
                    }
                }
                   
                
            }
            Console.ReadKey();
        }
/// <summary>
/// 获取所有约数的和
/// </summary>
/// <param name="i"></param>
/// <returns></returns>
        private static int GetAllSum(int n)
        {
            int sum = 0;
            for (int i = 1; i < n;i++ )
            {
                if(n%i==0)
                {
                    sum = sum + i;
                }
            }
                return sum;
        }

 

posted on 2016-12-30 10:54  Charlene0603  阅读(191)  评论(0)    收藏  举报

导航