(1)遍试算法

目录

1 算法简介

2 算法示例

2.1 韩信点兵

2.2 水仙花数

2.3 完全数 

3 参考


1 算法简介

算法是指计算机解决问题的办法,是指令的有限序列,也就是一些程序语句。

算法的特点:

(1)有穷性:指令序列一定是有穷的(区别于数学算法上的无穷)。

(2)确定性:用同样的(数据)输入,得到的结果应该是一样的。

(3)可行性:算法可以写成代码的形式,并在一定的时间内是可实现的。

(4)输入、输出:算法有输入输出。

2 算法示例

    简介:对所有可能的情况进行判断(如for循环中用if语句)。

2.1 韩信点兵

问题描述:韩信在点兵时,发现士兵 ①3个人站一排还剩2个人;②5个人站一排还剩3个人;③7人站一排还剩5个人;问最少有多少个士兵?

解决方法:设总共有n个士兵,n的最大值设为3,5,7的最小公倍数105,利用for循环+if判断语句。代码如下:

static void Main(string[] args)
{
     int n=0;
     for (n = 0; n < 105; n++)
     {
         if (n % 3 == 2 && n % 5 == 3 && n % 7 == 5)
         {
              Console.WriteLine("士兵数量最少是:" + n);
         }
     }
}

程序运行结果如下: 

韩信点兵例子结果

2.2 水仙花数

问题描述:水仙花数的值=其每一位上数的3次方的和。例如1^3+5^3+3^3 =153,153就是一个水仙花数。现找出3位数中的所有水仙花数。

解决方法:设变量a,b,c为百,十,个位上的数,判断每一个循环中是否满足水仙花数的条件,若满足则输出。

static void Main(string[] args)
{
    //total:统计水仙花数的个数
    int total = 0;
    //a,b,c:分别代表百,十,个位上的树
    for (int a = 1; a < 10; a++)
    {
        for (int b = 0; b < 10; b++)
        {
            for (int c = 0; c < 10; c++)
            {
                int num = a * 100 + b * 10 + c;
                if (num == Math.Pow(a, 3) + Math.Pow(b, 3) + Math.Pow(c, 3))
                {
                    total++;
                    Console.WriteLine("水仙花数_" + total+":"+num);
                }
            }
        }
    }
}

程序运行结果:

水仙花数例子结果

2.3 完全数 

问题描述:完全数定义,一个数=其所有因子的和(不包括自己),例如:28=1+2+4+7+14,28就是个完全数,找出小于9999的完全数。

解决方法:一个for循环+if语句:判断输出完全数,另一个for循环+if语句:输出因子和,代码如下:

static void Main(string[] args)
{
    //total:统计完全数的个数
    int total = 0;
    for (int i = 2; i < 9999; i++)
    {
        //sum:存储数字i各因子之和
        int sum=0;
        for (int j = 1; j < i; j++)
        {
             //判断因子
             if (i % j == 0)
             {
                 sum = sum + j;
             }
         }
         //判断是否相等
         if (sum == i)
         {
              total++;
              Console.WriteLine("完全数_" + total + ":" + i);
         }
     }
}

代码输出结果如下:

完全数例子结果

3 参考

整理自:慕课网——C#程序设计(北京大学—唐大仕)-第5讲

猜你喜欢

转载自blog.csdn.net/qq_29406323/article/details/86577482