Oppgave 2
La M det største heltallet av typen int
. Vi må finne største heltall
n slik at n (n − 1)/2 ≤ M. Det finner vi ved å løse
ligningen:
x2 + x − 2M = 0
Java-kode:
System.out.println(Math.sqrt(0.25 + 2.0*Integer.MAX_VALUE) - 0.5);
// Utskrift: 65535.5
Svaret blir n = 65535
public static int sum(int m, int n) // summen av tallene fra m til n { if (m == n) return m; // summen av ett tall er lik tallet int k = (m + n)/2; // k er midt mellom m og n return sum(m,k) + sum(k+1,n); // adderer de to delene } public static int sum(int n) // summen av tallene fra 1 til n { if (n < 1) throw new IllegalArgumentException ("n (" + n + ") må være positiv!"); if (n > 65535) throw new IllegalArgumentException ("n (" + n + ") er for stor!"); return sum(1,n); }