using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace ConsoleApp2 { class Program { static void Main(string[] args) { Console.WriteLine(div(1888888888,5)); Console.Read(); } /// <summary> /// 整数相除 /// </summary> /// <param name="a">除数</param> /// <param name="b">被除数</param> /// <returns></returns> public static int div (int a,int b){ List<int> history = new List<int>(); double count = 0; while (true) { if (a - b < 0) break; history.Add(b); count++; a = a - b; b += b; } count = (Math.Pow(2, count)) - 1; for (int i =history.Count-1; i >-1; i--) { if (a < 1) break; if (a - history[i] < 0) continue; count += Math.Pow(2, i); a -= history[i]; } Console.WriteLine("余数为"+a); return (int) count; } } }
这里没有考虑被除数为0的情况
using System; using System.Collections.Generic; using System.Diagnostics; using System.Linq; using System.Text; using System.Threading.Tasks; namespace ConsoleApp2 { class Program { static void Main(string[] args) { Stopwatch watch = new Stopwatch(); watch.Start(); for (int i = 0; i < 1000000; i++) { int s= div(1888888888, 5); } watch.Stop(); Console.WriteLine("土方法耗时"+watch.ElapsedMilliseconds); watch.Reset(); watch.Start(); for (int i = 0; i < 1000000; i++) { int s= (1888888888/5); } watch.Stop(); Console.WriteLine("系统方法耗时" + watch.ElapsedMilliseconds); Console.Read(); } /// <summary> /// 整数相除 /// </summary> /// <param name="a">除数</param> /// <param name="b">被除数</param> /// <returns></returns> public static int div (int a,int b){ List<int> history = new List<int>(); double count = 0; while (true) { if (a - b < 0) break; history.Add(b); count++; a = a - b; b += b; } count = (Math.Pow(2, count)) - 1; for (int i =history.Count-1; i >-1; i--) { if (a < 1) break; if (a - history[i] < 0) continue; count += Math.Pow(2, i); a -= history[i]; } //Console.WriteLine("余数为"+a); return (int) count; } } }