Avatar billede Quantum-- Nybegynder
04. september 2010 - 19:22 Der er 22 kommentarer

Jeg vil lave en liste bl.a.

Hej

Vi starter med at se på mængden {0,1,...,9999}.

Nu skal vi teste følgende

(x ligger i mængden.)

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 ?

På forhånd tak!
Avatar billede heinzdmx Nybegynder
04. september 2010 - 19:32 #1
Google is your friend...

Viser hvordan man tjekker om et tal er et primtal:
http://www.roseindia.net/java/beginners/Prime_number.shtml

x = a^3 + b^3 ?

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.
Avatar billede Quantum-- Nybegynder
04. september 2010 - 19:34 #2
Tak for dit svar.
a og b er naturlige tal mindre end x.
Avatar billede Quantum-- Nybegynder
04. september 2010 - 19:38 #3
Det er langt tid siden jeg har programmeret og jeg er heller ikke datalog. Jeg har bare svært ved at se koden for mig..
Avatar billede Quantum-- Nybegynder
04. september 2010 - 19:45 #4
Det undrer mig lidt, at man ikke bare har en standard-funktion. Altså

prime(x) og så siger den bare sandt eller forkert.

Det er underligt at man skal definere sådan en vigtig funktion fra bunden af.. Det forstår jeg ikke
Avatar billede heinzdmx Nybegynder
04. september 2010 - 19:53 #5
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.
Avatar billede Quantum-- Nybegynder
04. september 2010 - 20:04 #6
øv
Avatar billede arne_v Ekspert
05. september 2010 - 03:52 #7
Er x et primtal?

Givet at x ikke er ret stor (under 10000), så er det nemmeste nok bare at teste med alle tal fra 2 til kvadratroden af x.

Hvis ikke så angiv faktoriseringen.


Du har allerede fundet den første faktor i forbindelse med forrige problem. Divider med det og gentag processen.

Gælder der at x = a^3 + b^3 ?

Check alle mulige kombinationer af a og b. Både a og b er mindre end kubikroden af x, så det er ikke ret mange der skal checkes.
Avatar billede Quantum-- Nybegynder
05. september 2010 - 09:25 #8
Tak for dit svar.

Jeg ved bare ikke, hvordan jeg skriver sådan et program i Java/blue J..
Avatar billede arne_v Ekspert
05. september 2010 - 22:18 #9
Du skal jo nok starte med at lære Java!
Avatar billede Quantum-- Nybegynder
06. september 2010 - 21:31 #10
Ingen der vil hjælpe? :\
Avatar billede heinzdmx Nybegynder
06. september 2010 - 21:38 #11
Vi har skam forsøgt at hjælpe dig.

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.
Avatar billede Quantum-- Nybegynder
06. september 2010 - 21:42 #12
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;
}
Avatar billede Quantum-- Nybegynder
06. september 2010 - 21:42 #13
hvad gør jeg galt?
Avatar billede welcor Nybegynder
06. september 2010 - 22:47 #14
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)
}
Avatar billede arne_v Ekspert
06. september 2010 - 22:50 #15
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).
Avatar billede arne_v Ekspert
07. september 2010 - 04:21 #16
Faktorerne af 24 er ikke 2, 3 og 4 men 2, 2, 2 og 3.
Avatar billede Quantum-- Nybegynder
07. september 2010 - 18:18 #17
Tak for jeres svar.
Avatar billede Quantum-- Nybegynder
07. september 2010 - 18:19 #18
Hvad med kubiktallene? Hvordan løser jeg det problem?
Avatar billede arne_v Ekspert
07. september 2010 - 18:28 #19
Som jeg skrev tilbage i #7:

Check alle mulige kombinationer af a og b. Både a og b er mindre end kubikroden af x, så det er ikke ret mange der skal checkes.
Avatar billede welcor Nybegynder
08. september 2010 - 21:38 #20
*blush* ved ikke helt hvor jeg havde hovedet.. 4 er jo ikke et primtal..
Avatar billede bedrettin Nybegynder
11. september 2010 - 00:57 #21
prøv www.dahii.dk
Avatar billede arne_v Ekspert
11. september 2010 - 04:16 #22
????
Avatar billede Ny bruger Nybegynder

Din løsning...

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.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester