zoukankan      html  css  js  c++  java
  • c#代码分析

    代码分析是在一个IT行业计算机程序员必须要具有的基本专业技能,在了解一定的专业基础之上去看懂别人编写的代码,分析别人代码实现的功能,以及基本的维护和扩展测试。不同的人有不同的代码风格,要使自己的能要别人看懂,增加其可读性。

    对于for循环,要按照不同的条件分析,找出符合条件的数等等。在多层循环体中必须注意程序的匹配块。

    C#源代码如下:

    using System.Collections.Generic;

    using System.Text;

    namespace FindTheNumber

    {
      class Program
      {
        static void Main(string[] args)
        {
          int [] rg =
              {2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,
               20,21,22,23,24,25,26,27,28,29,30,31};
          for (Int64 i = 1; i < Int64.MaxValue; i++)
          {
            int hit = 0;
            int hit1 = -1;
            int hit2 = -1;
            for (int j = 0; (j < rg.Length) && (hit <=2) ; j++)
            {
              if ((i % rg[j]) != 0)
              {
                hit++;
                if (hit == 1)
                {
                  hit1 = j;
                }
                else if (hit == 2)
                {
                  hit2 = j;
                }
                else
                  break;
              }

            }
            if ((hit == 2)&& (hit1+1==hit2))
            {
              Console.WriteLine("found {0}", i);
            }
          }
        }
      }
    }

    问题1:这个程序要找的是符合什么条件的数?

    解:找出有且仅有符合条件的数,其取值在1-2的64次方范围,即无符号时范围:0-1844674407370955161618446744073709551616.

    有符号的Int64范围是:-9223372036854775808-9223372036854775807.这是一个很大的范围,运行时需要对设备有高性能的要求。找的一个数不能被连续的在2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31整除,其他数能被整除。

    问题2:这样的数存在么?符合这一条件的最小的数是什么?

    解:这样的数应该不存在。没有符合条件的数,最小符合条件的数会超出数据的表示围。

    问题3:在多核电脑上如何提高这一程序的运行效率?

    解:1.优化算法。

      2.提高CPU频率。

      3.将串行改为并行运算。

  • 相关阅读:
    oracle case when的使用方法
    php数字,字符,对象判断函数
    php is_dir 判断是否为目录
    mysql服务器查询慢原因分析与解决方法
    php生成html文件的多种方法介绍
    php mysql mysqli区别比较详解
    C++定时器用法(已经封装成类)
    获取远程计算机MAC
    批量获取远程计算机MAC
    c++封装日志类
  • 原文地址:https://www.cnblogs.com/lizone/p/5294184.html
Copyright © 2011-2022 走看看