Glorifindal Posted November 27, 2006 Posted November 27, 2006 (edited) Hi Forum - I am using Filemaker 7 client and need the following calc - The Lowest Common Denominator (actually what I think I need is greatest common factor) over 5 columns. Not sure if I would actally need more than one field because it would run something like this - LCD(field1, field2, field3, field4, field5) Any suggestions ? Many thanks in advance Glorifindal Edited November 27, 2006 by Guest
MarkWilson Posted November 27, 2006 Posted November 27, 2006 Welcome to the Forums. Nothing like starting with an easy one? The way to calculate this is by finding the prime factors for each of the five fields. Field1 = 21 = 3 x 7 Field2 = 42 = 2 x 3 x 7 Field3 = 49 = 7 x 7 Field4 = 63 = 3 x 3 x 7 Field5 = 77 = 7 x 11 Now multiple the factor pairing combinations to receive the lowest common denominator. 2 x 3 x 3 x 7 x 7 x 11 = 9702 The factor pairing break down: Field1 = 3 (3rd factor) x 7 (4th factor) Field2 = 2 (1st factor) x 3 (2nd factor) and 3 (3rd factor) x 7 (4th factor) and 2 (1st factor) x 7 (4th factor) Field3 = 7 (4th factor) x 7 (5th factor) Field4 = 3 (2nd factor) x 3 (3rd factor) and 3 (3rd factor) x 7 (4th factor) and 3 (3rd factor) x 7 (4th factor) Field5 = 7 (5th factor) x 11 (6th factor) LCD = 9702 This could be completed in one complex, recursive, custom function or by combining a simpler, recursive, custom function used in five fields and a second recursive, custom function to put the prime factors together.
comment Posted November 27, 2006 Posted November 27, 2006 The way to calculate this is by finding the prime factors That is ONE way, not necessarily THE way. Probably the least suitable one to implement as a computer algorithm. I'd try a custom function like this one.
Glorifindal Posted November 27, 2006 Author Posted November 27, 2006 Many thanks - I will look at both suggestions and get back when I am happy with one of them - I did sort of suspect a recursive calc would be needed, but was really in the dark as where to start Cheers Glorifindal
Glorifindal Posted November 29, 2006 Author Posted November 29, 2006 OK, so many thanks for the suggestions - I have to admit I am lost on both - I really need to work over 5 fields - all 5 fields will add up to 100 percent - so it could be field1 = 5, field2 = 5, field3 = 20, field4 = 30, field5 = 40. To explain - I started off with 2 fields, 80% and 20% - the result being 4 which is 80 divided by 20 without a reminder - and it has now become 5 fields. I am unable to grasp how to implement the first suggestion OR modify the second suggestion - lost in space really Anyone able to help ? Glorifindal
comment Posted November 29, 2006 Posted November 29, 2006 Could you explain what do you want as the result (or results)?
Glorifindal Posted November 29, 2006 Author Posted November 29, 2006 Thanks for the quick reply I need what I think is the lowest common multiple i.e for my first example it was field1 = 80, field2 = 20, calc = 4 - which was the highest divided by the lowest - in this example there was nothing left over so 4 is correct - divide 84 by 18 to get a quotient of 4 and a remainder of 12. Then divide 18 by 12 to get a quotient of 1 and a remainder of 6. Then divide 12 by 6 to get a remainder of 0, which means that 6 is the gcd - which is only possible with 2 integers - I need to do this with 5 integers. Is my need any clearer ? Many thanks Glorifindal
comment Posted November 29, 2006 Posted November 29, 2006 No, I am afraid it's even more confusing. Perhaps if you explained what these number represent, and what do you REALLY need to know as a result of the calculation. Surely, unless this is an excercise in math, you are not really interested in the GCD as such? In general, to get the GCD of more than two numbers, I think you would start with any two, then repeat the process with the first result and the third number as input, and so on. But I have a feeling this might not be required.
MarkWilson Posted November 29, 2006 Posted November 29, 2006 Glorifindal, From the earlier example: field1 = 5, field2 = 5, field3 = 20, field4 = 30, field5 = 40 Lowest Commmon Multiple = 120 Greatest Common Demonimator = 5 If I understand your example correctly then these should be your answers? In the later explanation, I do not understand where the "divide 84 by 18 to get a quotient of 4..." numbers come from. 84 = field1 (80) + GCD of field1 and field2? Do a search on the interweb for Lowest Commmon Multiple and Greatest Common Demonimator to see what they are and how they are calculated.
David Jondreau Posted November 30, 2006 Posted November 30, 2006 This link to the custom function above appears to be the start of what you're looking for..the Greatest Common Factor. But this function only covers 2 values. To get our 5 values, install the function GCF from Scott Morrison referenced above. Then create a new one GCF5 = GCF(E;GCF(D;GCF(D;GCF(C;GCF(B ; Mod(A ; ) )))) with parameters A, B, C, D, E There might be a more elegant solution (I'm just starting at CF development) but it works. G
Glorifindal Posted November 30, 2006 Author Posted November 30, 2006 Firstly, MANY thanks indeed for the help - OK, I will attempt to explain the issue properly - I have 5 sets of data - differant levels as it were. Each set has a differant "weight" i.e a differant percent. In order to work out the average over the differant weights, I have to bring it to the greatest common multiple. So, my example of 80 and 20 gives me 4 - as said, this example only works easily because there is no remainder, and because I concentrated on only 2 integers - but I need this to work out for 5 integers - Is that any clearer ? Excuse me please if not kind regards Glorifindal
comment Posted November 30, 2006 Posted November 30, 2006 I am afraid it still doesn't make much sense to me. I think I understand weighted average. I have no idea what GCD has to do with it, or why should one care about remainders. Let's take a simple example with 3 sets of data: Level1 = 50; Level2 = 30; Level3 = 20; Weight1 = 20; Weight2 = 50; Weight3 = 130; Now you can calculate: SumWeight = 200; Product1 = Level1 * Weight1 = 50 * 20 = 1000; Product2 = Level2 * Weight2 = 30 * 50 = 1500; Product3 = Level3 * Weight3 = 20 * 130 = 2600; SumProduct = 5100; WeightedAverage = SumProduct / SumWeight = 5100 / 200 = 25.5 If this is not what you want, then please give me a similar example of what you do need.
David Jondreau Posted November 30, 2006 Posted November 30, 2006 (edited) Now it's unclear. The GCD of 80 and 20 is 20. 20 will divide into 80 and 20 both without a remainder. The average value of 5 values that always add up to 100 will always be 20. Tell us the actual problem you're trying to solve instead of stripping away information and we might be able help. >>>I re read the thread and realize that comment's post is probably the answer you're looking for. Much easier to help when we see the problem, rather than what your idea of the problem is. Edited November 30, 2006 by Guest Reread other followup
Recommended Posts
This topic is 6629 days old. Please don't post here. Open a new topic instead.
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now