C# 求奇数和偶数和

例如,给出一个数字5,奇数和则为1+3+5=9。偶数和则为2+4=6。第一种是简单的算法,第二种是改进后,时间复杂度为1的算法。

View Code
        static void SumMath(int n, ref int sumOdd, ref int sumEven)
        {
            if (n >= 0)
            {
                for (int i = 1; i <= n; i += 2)
                {
                    checked
                    {
                        sumOdd += i;
                    }
                }
                Console.WriteLine("Sum of odd num is " + sumOdd);
                for (int i = 2; i <= n; i += 2)
                {
                    checked
                    {
                        sumEven += i;
                    }
                }
                Console.WriteLine("Sum of even num is " + sumEven);
            }
            else
            {
                for (int i = -1; i >= n; i -= 2)
                {
                    checked
                    {
                        sumOdd += i;
                    }
                }
                Console.WriteLine("Sum of odd num is " + sumOdd);
                for (int i = -2; i >= n; i -= 2)
                {
                    checked
                    {
                        sumEven += i;
                    }
                }
                Console.WriteLine("Sum of even num is " + sumEven);
            }

        }

        static void SumMath2(int n, ref int sumOdd, ref int sumEven)
        {
            int sign = 1;
            if (n < 0)
            {
                n = n * -1;
                sign = -1;
            }

            int sum = n * (n + 1) / 2;
            if (n % 2 == 1)
            {
                checked
                {
                    sumOdd = (sum + (n + 1) / 2) / 2 * sign;
                    sumEven = (sum - (n + 1) / 2) / 2 * sign;
                }
                Console.WriteLine("Sum of odd num is " + sumOdd);
                Console.WriteLine("Sum of even num is " + sumEven);
            }
            else
            {
                checked
                {
                    sumOdd = (sum - n / 2) / 2 * sign;
                    sumEven = (sum + n / 2) / 2 * sign;
                }
                Console.WriteLine("Sum of odd num is " + sumOdd);
                Console.WriteLine("Sum of even num is " + sumEven);
            }
        }

 

转载于:https://www.cnblogs.com/Ligeance/archive/2012/12/12/2814613.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值