Avatar billede prof2 Nybegynder
08. november 2001 - 18:23 Der er 12 kommentarer og
2 løsninger

HASTER! Hjælp! MEGET!

Hvad vil prime blive, hvis jeg kører primeNr(91) ???

Jeg ved det kræver noget tænkning! Men jeg bliver forvirret da jeg ikke kan JAVA!

public static int primeNr(int nr) {
        int prime = 2;
        int num = 1;
        for(int pr = 3; num < nr; pr += 2) {
            if(isPrime(pr)) {
                prime = pr;
                num++;
            }
        }
        return prime;
    }
}



    private static boolean isPrime(int num) {
        if(num == 2)return true;
        if((num & 1) == 0) return false;
        double sqr = Math.sqrt(num);
        for(double i = 3; i < sqr; i += 2)
            if(num % i == 0)return false;
        return true;
    }
Avatar billede prof2 Nybegynder
08. november 2001 - 18:25 #1
Her er en liste med Primtal hvis det hjælper lidt

http://www.phumu.org/primelist.html
Avatar billede prof2 Nybegynder
08. november 2001 - 18:25 #2
Prime skal være et primtal :)
Avatar billede disky Nybegynder
08. november 2001 - 18:31 #3
Programmet skulle finde det 91\'ende primtal. Hvad det er kan jeg ikke lige sige dig, men via din link kan du selv tælle

det er erastothenes si der bliver anvendt til af analysere det primtal.
Avatar billede disky Nybegynder
08. november 2001 - 18:32 #4
467 er vist det 91\'ende primtal.
Avatar billede prof2 Nybegynder
08. november 2001 - 18:36 #5
disky> Hvordan regner du det ud? Kan du komme med din udregníng ?
Avatar billede prof2 Nybegynder
08. november 2001 - 18:40 #6
Jeg smutter lige et par timer, men jeg tjecker i aften og giver points...
Avatar billede jakoba Nybegynder
08. november 2001 - 18:58 #7
class primes1 {

    public static int primeNr(int nr) {
        int prime = 2;
        int num = 1;
        for(int pr = 3; num < nr; pr += 2) {
            if(isPrime(pr)) {
                prime = pr;
                num++;
            }
        }
        return prime;
    }

    private static boolean isPrime(int num) {
        if(num == 2)return true;
        if((num & 1) == 0) return false;
        double sqr = Math.sqrt(num);
        for(double i = 3; i < sqr; i += 2)
            if(num % i == 0)return false;
        return true;
    }
   
    public static void main (String [ ] args) {
        System.out.println( \"primtal nr 91 er: \"+primeNr( 91 ) );
    }
} //end of class primes1

C:\\Jdk1.1.4\\bin\\java.exe  primes1
Working Directory - C:\\Programmer\\Kawa30\\Proj\\
Class Path - .;c:\\programmer\\kawa30\\classes.zip;c:\\jdk1.1.4\\lib\\classes.zip;c:\\jdk1.1.4\\
primtal nr 91 er: 433
Process Exit...

Avatar billede prof2 Nybegynder
08. november 2001 - 20:38 #8
jakoba> Kan du sige mig hvor man kan hente det program til at køre det der java... Så får du points :)
Avatar billede jakoba Nybegynder
08. november 2001 - 21:33 #9
Det program jeg bruger hedder Kava, og det koster penge (ca 300kr)

men alt hvad du egentlig behøver er et JDK (Java Development Kit) som du kan downloade gratis fra www.sun.com

mvh JakobA
Avatar billede disky Nybegynder
08. november 2001 - 21:47 #10
prof2:

Download Forte fra www.javasoft.com + jdk1.3.1 fra samme URL.

Forte er et bedre udviklingsmiljø end Kawa og så er det helt gratis.

Resultatet fandt jeg på den URL du selv gav, jeg talte mig frem :)

Tæl selv her:
2 3 5 7 11 13 17 19 23 29 31 37
41 43 47 53 59 61 67 71 73 79 83 89
97 101 103 107 109 113 127 131 137 139 149 151
157 163 167 173 179 181 191 193 197 199 211 223
227 229 233 239 241 251 257 263 269 271 277 281
283 293 307 311 313 317 331 337 347 349 353 359
367 373 379 383 389 397 401 409 419 421 431 433
439 443 449 457 461 463 467 479 487 491 499

Avatar billede jakoba Nybegynder
08. november 2001 - 22:10 #11
  2  3  5  7  11  13  17  19  23  29 , ..10
31  37  41  43  47  53  59  61  67  71 , ..20
73  79  83  89  97 101 103 107 109 113 , ..30
127 131 137 139 149 151 157 163 167 173 , ..40
179 181 191 193 197 199 211 223 227 229 , ..50
233 239 241 251 257 263 269 271 277 281 , ..60
283 293 307 311 313 317 331 337 347 349 , ..70
353 359 367 373 379 383 389 397 401 409 , ..80
419 421 431 433 439 443 449 457 461 463 , ..90
467 479 487 491 499
efter den skulle det være 467
men programmet gav altså 433 (7pladser før)

kunne det være den der double i bliver castet forkert der hvor den skal lave modolo beregning så det slet ikke er primtal der beregnes:
        for(double i = 3; i < sqr; i += 2)
            if(num % i == 0)return false;

mvh JakobA
Avatar billede prof2 Nybegynder
09. november 2001 - 08:40 #12
Tak. Jeg vidste nemlig godt at det ikke bare var det 91\'ne primtal. Jeg har nemlig selv talt :)

Men programmet lavede et eller andet jeg ikke kunne gennemskue:)

Tak for hjælpen.
Avatar billede disky Nybegynder
09. november 2001 - 08:53 #13
Ja der var du lidt for hurtig, jeg har nemlig fudnet den fejl der gør den regner forkert.

Men du har jo accepteret så det må betyde du er ligeglad, med en funktionerende klasse.
Avatar billede prof2 Nybegynder
09. november 2001 - 17:44 #14
Jeg ved godt at functionen regner forkert. Derfor kunne jeg ikke selv se hvad prime skulle være. Men jakoba gav mig der rigtige tal for 91. Jeg skal ikke finde det 91\'ne primtal. Men det som functionen kom ud med...

Men jeg kan sku ikke finde de download ting dér.
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