找一个真分数的埃及分数,c++版
埃及分数就是分子是1的分数,找法不唯一,由于浮点数表示不准确,本程序的精度控制在第19行
#include <iostream>
#include <string>
#include <sstream>
#include <cmath>
using namespace std;
int main(int argc, char** argv)
{
double xx1;
char op;
double xx2;
cin>>xx1>>op>>xx2;
int a=2,c[100]={0},i=2,count=0;
double b=xx1/xx2;//cout<<b<<endl;
double sum=0.0;
double temp;
while(abs(b-sum)>=1e-11)
{
temp=1.0/(double)i;
sum+=temp;
c[count++]=i;
if(sum>b)
{
sum-=temp;
c[--count]=0;
}
i++;
//cout<<sum<<endl;
}
if(abs(b-sum)<1e-11)
{
int n=0;
while(c[n]!=0)
{
cout<<"1/"<<c[n++]<<"+";
}
}
return 0;
}