学习小结
来源:互联网 发布:套号学历淘宝被骗 编辑:程序博客网 时间:2024/06/14 17:31
#include <stdio.h>
int main()
{
int a;
int b;
int c;
int i;
int j;
int k;
printf("input : ");
scanf("%d/%d",&a,&b); //输入分子a和分母b
printf("output : ");
while(1)
{
if(a%b) //分子不能整除分母
c = b/a+1; //分解出一个分母为b/a+1的埃及分数
else //分子不能整除分母
{
c = b/a;
}
printf("1/%d+",c);
i = b;
b = lcm(b,c); //求出原分数和埃及分数通分后的分母
a = b/i*a-1*b/c; //求出通分后的分子
if(a == 1) //分子为1时跳出
{
printf("%d/%d",a,b);
break;
}
if(a == 3) //分子为3时跳出
{
printf("1/%d+1/%d",b/2,b);
break;
}
}
int main()
{
int a;
int b;
int c;
int i;
int j;
int k;
printf("input : ");
scanf("%d/%d",&a,&b); //输入分子a和分母b
printf("output : ");
while(1)
{
if(a%b) //分子不能整除分母
c = b/a+1; //分解出一个分母为b/a+1的埃及分数
else //分子不能整除分母
{
c = b/a;
a = 1; //分子为1时跳出
printf("%d/%d\n",a,c);
break;}
printf("1/%d+",c);
i = b;
b = lcm(b,c); //求出原分数和埃及分数通分后的分母
a = b/i*a-1*b/c; //求出通分后的分子
if(a == 1) //分子为1时跳出
{
printf("%d/%d",a,b);
break;
}
if(a == 3) //分子为3时跳出
{
printf("1/%d+1/%d",b/2,b);
break;
}
}
}
lcm(int a,int b) //求最小公倍数
{
int c;
int d;
int e;
if(a<b)
{
e = a;
a = b;
b = e;
}
c = a;
d = b;
while(d != 0)
{
e = c%d;
c = d;
d = e;
}
return (a*b/c);
}
在写程序时要注意变量的变化,例:
i = b;
b = lcm(b,c);
a = b/i*a-1*b/c;
这里要将b赋值给i,避免之后的计算通分后分子时由于b发生变化导致计算错误
if(a == 3) //分子为3时跳出
{
printf("1/%d+1/%d",b/2,b);
break;
}
除了a==1时,当分子为3时,也可以跳出程序,输出的分数为1/(b/2),1/b,此两分数相加为3/b。
0 0
- [学习小结]Ajax小结
- 面试小结 学习小结
- 学习小结
- 学习小结
- 学习小结
- 学习小结
- 学习小结
- 学习小结
- 学习小结
- 学习小结
- 学习小结
- 学习小结
- 学习小结
- 学习小结
- 学习小结
- 学习小结
- 学习小结
- 学习小结
- 1. Two Sum LeetCode(0ms 极致探索)
- C3P0配置文件提示 No grammar constraints (DTD or XML schema)的解决方法
- typedef 关键字
- Linux运维笔记-文档总结-cifs网络文件系统访问
- DAO模式
- 学习小结
- JavaScript中的this
- 数据库系统概论学习攻略1
- 发布自己的Angular2库初探
- c++实验5:数组分离
- NYOJ 309
- Unity 3D
- 从Angular2路由引发的前后端路由浅谈
- ubuntu 终端里出现了“确定”不知道如何点击