输入一个小于1的正小数,分别输出最简分数的分子和分母。
此代码的目的是简单快速的求出有限位小数对应的最简真分数。
C语言代码如下:
# include <stdio.h>
# include <string.h>
// 判断两个整数的最大公约数是否为1
int is_prime(int a, int b)
{
while (a != b)
{
a>b?(a-=b):(b-=a);
}
return b;
}
int main(void)
{
char ch[50];
int a=0, b=1;
int i = 0, flag=0,temp;
gets(ch);
// 读取尾数长度
while (ch[i])
{
if (flag == 1)
{
a += (ch[i]-'0');
a *= 10;
b *= 10;
}
if (flag==0 && ch[i]=='.')
flag = 1;
i++;
}
a /= 10;
temp = is_prime(a,b);
while (1 != temp)
{
a /= temp;
b /= temp;
temp = is_prime(a,b);
}
printf("%d %d
",a,b);
return 0;
}