10000的阶乘

来源:互联网 发布:淘宝百货店铺名字大全 编辑:程序博客网 时间:2024/04/29 21:23

int iN = int.Parse( txtN.Text);//取得N的值
   ArrayList arrJG = new ArrayList(); //存放结果的数组  
   int iZJJG = 0;//存放中间结果
   int iJW = 0;//存放进位 
   
   arrJG.Add( (object)1);//数组的首个值是1
   for( int i = 2; i <= iN; i++)
   {
    int iArrLength = arrJG.Count;//去数组的长度
    for( int iArr = 0; iArr < iArrLength ; iArr++)
    {
     iZJJG = int.Parse( arrJG[iArr].ToString());
     if( iZJJG != 0)
     {
      iZJJG *= i;
      arrJG[iArr] = (object)iZJJG;   
     }
    }
    for( int iArr = 0;iArr < iArrLength; iArr++)
    {  
     int iStrLng = arrJG[iArr].ToString().Length;//数组元素的长度
     if( iStrLng > 5)
     {
      iJW = int.Parse( arrJG[iArr].ToString().Substring(0,iStrLng - 5));
      if( iArr + 1 != iArrLength)
      {
       arrJG[iArr + 1] = int.Parse( arrJG[iArr + 1].ToString()) + iJW;
       arrJG[iArr] = (object)arrJG[iArr].ToString().Substring( iStrLng-5);
      }
      else
      {
       arrJG[iArr] = (object)arrJG[iArr].ToString().Substring( iStrLng-5);
       arrJG.Add( (object)iJW );
      }
     }
    }
   }

   int iArrLength2 = arrJG.Count;
   string strValue = "";

   for( int a = iArrLength2-1; a >= 0; a--)
   {
    if( arrJG[a].ToString() != "0")
    {
     strValue += arrJG[a].ToString();   
    }
   }
   txtReturn.Text = strValue; 

 

结果用了135秒,唉,今天改了下,用时35秒,代码如下:

ArrayList arrZJJG = new ArrayList();
   //int[] iZJJG = new int[]{};//数组中每个元素在乘后所放的值
   string[] strResult = new string[]{};//结果的字符串数组
   string strTmStrt = System.DateTime.Now.ToString();//去系统的当前时间
   string strTmEnd = "";//程序完成后的系统时间。
   int iArrLngth = 1;//iZJJG数组的长度
   int temp;//临时
   int last ;
   arrZJJG.Add( (object)1);
   for( int i = 1; i <= para_iN; i++)
   {
    last = 0;
    for( int iLen = 0; iLen < iArrLngth; iLen++)
    {
     temp = int.Parse( arrZJJG[iLen].ToString()) * i + last;
     if( temp != 0)
     {
      arrZJJG[iLen] = temp % 100000;
      last = temp / 100000;
     }
     else
     {
      arrZJJG[iLen] =(object) "00000";
     }
    }
    if( last != 0)
    {
     arrZJJG.Add( last);
     last = last / 100000;
     iArrLngth = arrZJJG.Count;     
    }
   }
   iArrLngth = arrZJJG.Count;
   string strbb = "";
   for( int i = iArrLngth; i > 0; i--)
   {
    strbb += arrZJJG[i-1].ToString() ;
   }
   strTmEnd = System.DateTime.Now.ToString();
   strbb += "(" + strTmStrt +")" + "(" +strTmEnd +")";

原创粉丝点击