你想过没,除以2最终的结果, 9整除2不能整除 12整除2=6 6整除2=3 3不能整除2 事实上,我已完全忘了数学上的就最大公约数的公式了.我想你能提供出来,让我思想开扩一直吧.呵.
这个方法如果,15 5 这组又是不行,因为15 5 这两个数的最大公约数就是5自身.
那如果这样行不行呢.
int a=0;//用来存求公约数的第一个数
int b=0;//用来存求公约数的第二个数
int c=0;
if(a>b)//如果A>b
{
if(a%b==0)//那么看他们的最大公约数是否为两数中的较小数.
{c=b;}//如果较大数%较小数为0那最大公约数为较小数
else
{for(int d=b;d>1;d--)}//循环从最小数开始递减.具体代码就不写了.
}
该代码只是逻辑,未在VS中写,呵呵,看看思路行不行.
但是思考了一下,两个数求最大公约数,首先,看最大公约数是否为两数的某个数. 其次看这两个数是否能整除2(偶数) 或是整除3(奇数) 得到的值,在被你需要求最大公约数的数除一下.应该就是了. 其实就是求出最小公约数,就能求出最大公约数,不知道我说的对不对. 作者: 胡振超 时间: 2012-3-29 17:18
static void Main(string[] args)
{
while(true)
{
Console.WriteLine("请输入两个数并用“/”隔开");
string num = Console.ReadLine();
string[] nums = num.Split('/');
int a = Convert.ToInt32(nums[0]);
int b = Convert.ToInt32(nums[1]);
int[] c = getnewnum(a,b);
string newnum=c[0]+"/"+c[1];
Console.WriteLine("{0}的最简分数为{1},最大公约数为{2}", num, newnum,c[2]);
// Console.ReadLine();
}
}
public static int[] getnewnum(int a,int b)
{
int yue=1;//定义最大公约数
int min = a < b ? a : b;//得到最小数
for (int i = min; i > 0; i--)//从最小数开始作为除数
{
if (a % i == 0 && b % i == 0)//如果两个数能同时被整除则此时的除数为最大公约数
{
yue = i;
break;//得到最大公约数后就跳出循环
}
}
int[] newnum = { a / yue, b / yue ,yue};//定义数组存储最简分数
return newnum;
}