Gå til innhold

Matte i media og forskning.


rlz

Anbefalte innlegg

Videoannonse
Annonse

Hva har tallene 85, 125 og 130 til felles? De kan alle skrives som summen av to kvadrattall på to ulike måter:

  • 85 = 62 + 72 = 22 + 92
  • 125 = 52 + 102 = 22 + 112
  • 130 = 72 + 92 = 32 + 112

Spørsmålet som jeg ønsket å finne svaret på, var hva det minste tallet som kan skrives på denne måten, er. Siden mine matematiske ferdigheter dessverre viste seg å ikke være til mye hjelp i dette spørsmålet, skrev jeg et lite C++-program som finner svaret ved «brute force»:

 

Klikk for å se/fjerne innholdet nedenfor
#include <iostream>
using namespace std;

int main() {
 int u, v, x, y, limit;

 cout << "u^2 + v^2 = x^2 + y^2\n"
   << "\nTast inn oevre grense for soek:\n";

 cin >> limit;

 for(u = 1; u <= limit; u++) {
for(v = u + 1; v <= limit; v++) {
  for(x = 1; x <= limit; x++) {
	for(y = x + 1; y <= limit; y++) {
	  if(u > x && v != y &&
		 u * u + v * v == x * x + y * y) {
		cout << "\nFant tall: " << u * u + v * v
			 << "\n" << u << "^2 + " << v << "^2 = "
			 << x << "^2 + " << y << "^2\n";
	  }
	}
  }
}
 }

 return 0;
}

Kjøres programmet med øvre grense lik 10, fås følgende utskrift:

 

Klikk for å se/fjerne innholdet nedenfor
u^2 + v^2 = x^2 + y^2

 

Tast inn oevre grense for soek:

10

 

Fant tall: 65

4^2 + 7^2 = 1^2 + 8^2

 

Fant tall: 85

6^2 + 7^2 = 2^2 + 9^2

Er det noen her som klarer det jeg ikke klarte, nemlig å resonnere seg frem til svaret med matematiske metoder?

 

Edit: Programmet slik det står finner bare summer av ulike kvadrattall, slik at 50 = 52 + 52 = 12 + 72 ikke kommer med. Her er en modifisert utgave uten denne begrensningen:

 

Klikk for å se/fjerne innholdet nedenfor
#include <iostream>
using namespace std;

int main() {
 int u, v, x, y, limit;

 cout << "u^2 + v^2 = x^2 + y^2\n"
   << "\nTast inn oevre grense for soek:\n";

 cin >> limit;

 for(u = 1; u <= limit; u++) {
for(v = u; v <= limit; v++) {
  for(x = 1; x <= limit; x++) {
	for(y = x; y <= limit; y++) {
	  if(u > x && v != y &&
		 u * u + v * v == x * x + y * y) {
		cout << "\nFant tall: " << u * u + v * v
			 << "\n" << u << "^2 + " << v << "^2 = "
			 << x << "^2 + " << y << "^2\n";
	  }
	}
  }
}
 }

 return 0;
}

Endret av ePsiLON47
Lenke til kommentar
Må være noe rart med koden din. Jeg finner lavere tall.

Hvilke tall da?

 

Når jeg nå ser på det jeg skrev, ser jeg at jeg har formulert meg litt utydelig; jeg har ikke sagt noe om hvorvidt summer av to like kvadrattall teller. Programmet mitt finner fire ulike heltall u, v, x og y som oppfyller ligningen u2 + v2 = x2 + y2. Under disse restriksjonene er 50 = 52 + 52 = 12 + 72ikke en løsning, ettersom u = v.

 

Uansett er jeg interessert i å høre om hvordan folk tenker når de kommer frem til disse tallene, restriksjoner eller ei.

Lenke til kommentar
Under den restriksjonen er 65 det laveste.

Ja, og det er jo det programmet mitt sier. :)

 

Men jeg er ikke så interessert i selve svaret som jeg er i hvordan man kan resonnere seg frem til det. Hvordan vet du at 65 er det laveste tallet dersom du ikke har kjørt et program som har prøvd ut alle lavere muligheter?

Endret av ePsiLON47
Lenke til kommentar
Under den restriksjonen er 65 det laveste.

Ja, og det er jo det programmet mitt sier. :)

Men jeg er ikke så interessert i svaret som jeg er i hvordan man kan resonnere seg frem til det. Hvordan vet du at 65 er det laveste tallet dersom du ikke har kjørt et program som har prøvd ut alle lavere muligheter?

man må være matemagiker... :!:

Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
×
×
  • Opprett ny...