Er x et primtal? Hvis ikke så angiv faktoriseringen.
Gælder der at x = a^3 + b^3 ? - Og angiv resultatet. Så skal vi udskrive en liste. Altså hvor alle tallene er. Hvordan skriver jeg sådan et program i bluej/java ?
Den forstår jeg ikke.. du beskriver ikke på noget som helst tidspunkt hvad a og b er.
Omkring en liste og hvordan du tilføjer tal: http://en.wikipedia.org/wiki/Generics_in_Java Læs og forstå det. Du skal bruge den viden til at kunne bygge mere avancerede programmer.
Specifikt BlueJ kan jeg ikke hjælpe dig med, men forstår du koden er der ikke et spørgsmål om hvilket IDE du bruger.
Man kunne jo lave funktioner til alt, så ville java bare fylde meget mere at hente.
Så det hele skal jo tænkes igennem, hvor dit skal man bruge primtal til noget i et programmerings sprog.. mit gæt er at det sker meget sjældent.
Jeg har aldrig skulle bruge det til andet end nogle få skole opgaver.
og når man selv kan definere en funktion let, så er det jo heller ikke et problem.
Jeg har desværre ikke noget kode der gør hvad du vil, og da jeg anser min funktion på eksperten som hjælp til selvhjælp, så kan jeg ikke hjælpe dig med så meget.
Det du ønsker er ikke vejledning, du ønsker den færdige løsning der kan afleveres. Det er der ikke rigtigt nogen der har løst til når det ikke er en meget simpel løsning.
Muligvis er der nogle der vil, men der er mange (deriblandt mig) der ikke vil lave den opgave for dig, uden at du gør noget i det selv.
Du skriver det er lang tid siden du har programmeret, så må du jo prøve at sætte dig ind i hvordan det gøres. Jeg har allerede givet dig nogle forslag til sider hvor du kan læse mere.
for(i=1,i3=1;i3+i3<9998;i++,i3=i*i*i) for(j=i,s=i3+j*j*j;s<9998;j++,s=i3+j*j*j) { // check if s is prime here }
public ArrayList<Integer> getFactors(int n) { ArrayList<Integer> factors = new ArrayList<Integer>(); for (int i = 1; i <= n; i++) { if (n % i == 0) factors.add(i); } return factors; }
Det var meget bedre - nu kan man se at du også laver noget :P
Den første er noget enklere end du vil have det til. Her kommer det som pseudokode:
for (i [2.. 10000]) { prime = true for (j [2.. i/2]) if (i mod j == 0) prime = false
if (prime) addToPrimeList(i) }
Med hensyn til din anden funktion - tænk på 24. Med din metode kommer tallene 1, 2, 3, 4, 6, 8, 12, 24 allesammen til at være faktorer. Det er jo åbenlyst forkert i denne sammenhæng - du er ude efter primfaktorerne 2, 3 og 4. Denne problemstilling løses almindeligvis med rekursion.
List getFactors(n) { if n = 1 return empty list if (prime(n)) return list( n ) for (i [2.. n/2]) if (n % i == 0) return new list ( i ) append getFactors(n/i) }
Hvis du i den sidste ændrer for løkken fra for(int i = 1; i <= n; i++) til for (int i = 2; i < n; i++) *og* kun adder prim tal, så er du tæt på (mangler kun at håndtere hvis samme tal optræder flere gange).
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.