Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /*
- * Chapter8Number15.java
- *
- * JM 8 (15)
- *
- * Consider all proper fractions that have positive denominators on [1, 100].
- * Write a program that finds the two such fractions that are closest to
- * 17 / 76, one from above and one from below.
- * Hint: http://en.wikipedia.org/wiki/1985 & http://en.wikipedia.org/wiki/1567
- *
- * @author Nick Ku <nicholasku@gmail.com>
- */
- public class Chapter8Number15
- {
- public static double num = 1;
- public static double denominator = 1;
- public static void main(String[] args)
- {
- // Initialize variables.
- int targetNumerator = 17, targetDenominator = 76, maxDivisions = 100;
- int // These values insure that the fractions start out at 1.
- lessNumerator = 0,
- lessDenominator = maxDivisions,
- greaterNumerator = maxDivisions,
- greaterDenominator = maxDivisions;
- double target = (double) targetNumerator / targetDenominator;
- for (denominator = 1; denominator < 100; denominator ++)
- {
- for (num = 1; num < denominator; num++)
- {
- if (1.0 * greaterNumerator / greaterDenominator > 1.0 * num / denominator && num / denominator > target)
- {
- greaterNumerator = (int)num;
- greaterDenominator = (int)denominator;
- }
- if (1.0 * lessNumerator / lessDenominator < 1.0 * num / denominator && num / denominator < target)
- {
- lessNumerator = (int)num;
- lessDenominator = (int)denominator;
- }
- }
- }
- // Print results.
- System.out.printf("Result: %d / %d < %.5f & %d / %d > %.5f\n",
- lessNumerator, lessDenominator, target,
- greaterNumerator, greaterDenominator, target);
- System.out.println("Expected: 19 / 85 < 0.22368 & 15 / 67 > 0.22368");
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement