Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- from math import sqrt
- def isPrime(n):
- if (n < 2):
- return False
- elif (n == 2 or n == 3):
- return True
- else:
- for i in range(2,int(sqrt(n))+1):
- if (n % i == 0):
- return False
- return True
- def getFactors(n):
- f = []
- for i in range(1,n+1):
- if (n % i == 0):
- f.append(i)
- return f
- def closestFactor(f,c):
- diff = pow(c,3)
- for i in range(0,len(f)):
- if (abs(f[i] - c) < diff):
- diff = abs(f[i] - c)
- a = f[i]
- return a
- def roxanneMethod(num_candies):
- factors = getFactors(num_candies)
- cuberoot = pow(num_candies,1./3)
- if (pow(int(cuberoot),3) == num_candies):
- a = int(cuberoot)
- b = a
- c = a
- else:
- a = closestFactor(factors,cuberoot)
- if (isPrime(int(num_candies/a))):
- b = 1
- c = num_candies / a
- else:
- squareroot = pow(num_candies/a,1./2)
- if (pow(int(squareroot),2) == int(num_candies/a)):
- b = int(squareroot)
- c = b
- else:
- factors = getFactors(num_candies/a)
- #print(num_candies /a )
- #print(factors
- b = closestFactor(factors,squareroot)
- c = int((num_candies/a)/b)
- squareroot = pow(a * b, 1./2)
- factors = getFactors(a * b)
- a_star = closestFactor(factors,squareroot)
- b_star = (a*b)/a_star
- if (abs(a_star-b_star) < abs(a-b)):
- a = a_star
- b = b_star
- squareroot = pow(a * c, 1./2)
- factors = getFactors(a * c)
- a_star = closestFactor(factors,squareroot)
- c_star = (a*c)/a_star
- if (abs(a_star-c_star) < abs(a-c)):
- a = a_star
- c = c_star
- l = [a,b,c]
- return l
- # num_c = int(input("How many candies do you want to package: "))
- # while (num_c < 1):
- # num_c = int(input("How many candies do you want to package: "))
- #
- # ans = roxanneMethod(num_c)
- # print(ans)
- u = int(input("Do you want to get a list of answers? Type 1. Do you want to manually try numbers? Type 2."))
- if (u == 1):
- max = int(input("What number do you want to print up to?"))
- for i in range(1,max + 1):
- print("num candies = " + str(i) + " and Roxanne method gives " + str(roxanneMethod(i)))
- else:
- while True:
- choice = int(input("What number would you like to check? "))
- print("The roxanne method returns: " + str(roxanneMethod(choice)))
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement