Question:
Task: Convert a/b
to the sum of numbers like 1/n
. For example, when a=3
and b=7
, then the program should output 3/7 = 1/3 + 1/11 + 1/231
.
I already thought of an algorithm, but I just can't write it.
The algorithm itself:
if a>b
, then you need to remember an integer, for example, if a=10
and b=7
, then you need to bring to 3/7
and remember 1
as an integer.
If a < b
, then everything is fine and the for
loop starts. In it i = 2
and it should reach the value b
. (After that, there is no point in checking.) Take b
and divide by i
. If the value is less than the value of a
, then i
becomes 1
more. And this continues until a > b/i
. Once there the first such number, it is stored (ie, stored i
) to display) ( i = 3
, the console should be deduced 1/3+
. Then he stands out this value to the start and start all over again, until а
not will be equal to 1
(Example: it was 3/7
and becomes 3/7 - 1/3 = 2/21
, а
value is 2
, and b
is assigned the value 21
)
my extraordinary code:
#include <iostream>
using namespace std;
int main(){
int a;
int b;
int c;
float d;
int k;
int g;
int e [k];
cout << "значение а";
cin >> a;
cout << "значение б";
cin >> b;
if( a > b ){
c = a / b;
b = a - (b*c);
return c, b;
} else
for( int i = 2 ; i++ ; i >= b ){
while(a>d){
d = b / i;
}
int f = b;
b = b * i;
a = ( (b/f) * a ) - (b/i);
e [k] = i;
k = k+1;
}
while(e[k]>0){
cout << "1/+" << e[k];
k++;
}
}
Answer:
Fibonacci decomposition into Egyptian fractions in Python (long arithmetic is built-in), the code does not check that the fraction is correct.
def egy(p, q):
res = []
while p > 0:
den = (q + p - 1) // p
res.append(den)
rem = (-q) % p
p, q = rem, den * q
return res
print(egy(3,7))
print(egy(7,15))
print(egy(5,121))
[Dbg]>>>
[3, 11, 231]
[3, 8, 120]
[25, 757, 763309, 873960180913, 1527612795642093418846225]