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;
}
}
}