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)))
Run
Reset
Share
Import
Link
Embed
Language▼
English
中文
Python Fiddle
Python Cloud IDE
Follow @python_fiddle
Browser Version Not Supported
Due to Python Fiddle's reliance on advanced JavaScript techniques, older browsers might have problems running it correctly. Please download the latest version of your favourite browser.
Chrome 10+
Firefox 4+
Safari 5+
IE 10+
Let me try anyway!
url:
Go
Python Snippet
Stackoverflow Question