Project Euler/66
From charlesreid1
Problem Statement
Solving Diophantine equations of the form:
Link: https://projecteuler.net/problem=66
Solution Technique
Solving Diophantine equations requires the use of the continued fractions work we did in Problems 64 and 65.
Code
Core algorithm of Problem 66 solution:
public class Problem066 {
public static void main(String[] args) {
solve();
}
public static void solve() {
final int DMAX = 1000;
BigInteger x = BigInteger.ZERO;
// Values of solution x and D at maximum
BigInteger xmax = BigInteger.ZERO;
int Dmax = 0;
for(int D=1; D<=DMAX; D++) {
x = ContinuedFractionBig.solvePell(D);
if(x.compareTo(xmax)>0) {
xmax = x;
Dmax = D;
}
System.out.println("D = "+D+", x = "+x);
}
System.out.println(Dmax);
}
}
This uses the ContinuedFractionBig class we already saw in Project Euler/64.
Link: https://git.charlesreid1.com/cs/euler/src/master/scratch/Round2_050-070/066
ContinuedFractionBig class: https://git.charlesreid1.com/cs/euler/src/master/scratch/Round2_050-070/066/ContinuedFractionBig.java
Problem066 class: https://git.charlesreid1.com/cs/euler/src/master/scratch/Round2_050-070/066/Problem066.java
Flags