ÖVNINGSUPPGIFT

Uppgift 3 - Primtal

Försök själv först. Ledtrådar och facit finns längre ner – helt utan inloggning.


Nyckelord: Metoder

Matematiska beräkningar

Primtal

Skriv koden till ett program som beräknar alla primtal mellan 1 och 1000.

Ett primtal är ett naturligt tal, som är större än 1 och som inte har några andra positiva delare än 1 och talet självt.

-Wikipedia

Utgå från programmet:

public class MetoderUppgift3 {
    public static void main(String[] args) {

    }
}

Skapa sedan en metod isPrime() som givet ett heltal, avgör om det är ett primtal eller ej. Återanvänd sedan metoden för att gå igenom alla tal mellan 1 och 1000.

Ledtråd

För tal från 2 och uppåt: pröva positiva delare från 2 till och med talets kvadratrot. Om någon ger resten 0 är talet inte ett primtal. Tal mindre än 2 är aldrig primtal.

Svar
public class MetoderUppgift3 {
    public static void main(String[] args) {

        // Loopa igenom alla tal mellan 2 och 1000 (1 är inte ett primtal enligt definition!
        for(int i = 2; i < 1000; i++){
            if(isPrime(i)){
                System.out.print(i + ", ");
            }
        }


    }
    // Loopar igenom alla värden som är mindre än number och kollar om det är jämnt delbart med number
    public static boolean isPrime(int number) {
        if (number < 2) return false;
        for (int divisor = 2; divisor <= number / divisor; divisor++) {
            if (number % divisor == 0) return false;
        }
        return true;
    }
}

Förklaring: 

Metoden returnerar false för tal mindre än 2. Den testar sedan delare från 2 medan divisor ≤ number / divisor, vilket motsvarar prövning upp till kvadratroten utan risk för overflow i divisor * divisor. Finns en jämn delare returneras false; annars true.

Tillbaka till översikt