Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- class Fraction:
- #Constructor. Puts fraction in simplest form
- def __init__(self,a,b):
- self.num = a
- self.den = b
- self.simplify()
- #Print Fraction as a String
- def __str__(self):
- if self.den==1:
- return str(self.num)
- else:
- return str(self.num)+"/"+str(self.den)
- #Get the Numerator
- def getNum(self):
- return self.num
- #Get the Denominator
- def getDen(self):
- return self.den
- #Give Numerical Approximation of Fraction
- def approximate(self):
- return self.num/self.den
- #Simplify fraction
- def simplify(self):
- x = self.gcd(self.num,self.den)
- self.num = self.num // x
- self.den = self.den // x
- #Find the GCD of a and b
- def gcd(self,a,b):
- if b==0:
- return a
- else:
- return self.gcd(b,a % b)
- #Complete these methods in lab
- def __add__(self,other):
- newnum = self.num*other.den + self.den*other.num
- newden = self.den*other.den
- common = self.gcd(newnum, newden)
- return Fraction(newnum//common, newden//common)
- def __sub__(self,other):
- newnum = self.num*other.den - self.den*other.num
- newden = self.den*other.den
- common = self.gcd(newnum, newden)
- return Fraction(newnum//common, newden//common)
- def __mul__(self,other):
- newnum = self.num*other.num
- newden = self.den*other.den
- return Fraction(newnum, newden)
- def __truediv__(self,other):
- newnum = self.num * other.den
- newden = self.den * other.num
- return Fraction(newnum, newden)
- def __pow__(self,exp):
- if exp == 0:
- return 1
- elif exp > 0:
- return Fraction(self.num**exp, self.den**exp)
- else:
- return Fraction(self.den**abs(exp), self.num**abs(exp))
- # '''x = Fraction(1,2)
- # y = Fraction(2,3)
- # print(x+y)
- # print(x-y)
- # print(x*y)
- # print(x/y)
- # print(x**2)
- # print(y**2)'''
- print('Welcome to Fun with Fractions!')
- number = input('Enter Number of iterations (integer>0):\n')
- while True:
- number = int(number)
- if number >= 0:
- break
- else:
- number = input('Enter Number of iterations (integer>0):\n')
- harmony = Fraction(0,1)
- for k in range(1, (number+1)):
- harmony += Fraction(1, k)
- print('H' + '(' + str(number) + ')=' + str(harmony))
- print('H' + '(' + str(number) + ')~=' + str(harmony.approximate()))
- two = Fraction(0,1)
- for k in range(0, (number+1)):
- two += Fraction(1,2**k)
- print('T' + '(' + str(number) + ')=' + str(two))
- print('T' + '(' + str(number) + ')~=' + str(two.approximate()))
- zero = Fraction(0,1)
- for k in range(0, (number+1)):
- two += Fraction(1,2**k)
- zero_result = Fraction(2,1) - two
- print('Z' + '(' + str(number) + ')=' + str(zero_result))
- print('Z' + '(' + str(number) + ')~=' + str(zero_result.approximate()))
- def Rieman(number, b):
- riemann = Fraction(0,1)
- for k in range(1, (number+1)):
- riemann += (Fraction(1, k)**b)
- return riemann
- for k in range(2,9):
- print('R' + '(' + str(number) + ',' + str(k) + ')=' + str(Rieman(number, k)))
- print('R' + '(' + str(number) + ',' + str(k) + ')~=' + str(Rieman(number, k).approximate()))
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement