7 svar
399 visningar
alix2a är nöjd med hjälpen
alix2a 416
Postad: 30 okt 2021 11:22

primtal i 100-intervall

Vill skriva ett program som skriver ut antalet primtal i 100-intervall, alltså antalet primtal mellan 1 till 100, mellan 100 till 200, mellan 200 till 300 osv, och har kommit såhär långt:

Primtal är en lista med alla primtal.

Jag vet att jag bara kan skriva if j är mindre än 100 osv men det blir väldigt långt om jag vill göra det i intervall upp till större tal såsom 2000. Tänker att det sättet ovan är mer effektivt.

CurtJ 1143
Postad: 30 okt 2021 11:49

Det är väl bra tänkt men range(0) ger dig ingen sekvens alls, range (1) ger dig sekvensen [0] som jag gissar är det du är ute efter om du bara vill ha det första intervallet (0-99), vill du ha 1-100 så får du komplettera med +1.

För fler sekvenser så får du utöka din första range.

Har jag förstått din fråga rätt?

alix2a 416
Postad: 30 okt 2021 11:55

Tack! Ja precis.

 

Nu har jag kommit såhär långt och tänker att jag vill lägga till alla j som uppfyller kravet i lista 1 i en listan L,  dock vet jag inte hur man lägger till tal/värden i en lista I EN ANNAN lista... Vet du det?

CurtJ 1143
Postad: 30 okt 2021 14:08 Redigerad: 30 okt 2021 14:15

L är ju en vektor så du får titta på vad en Array har för metoder och välj ur dem beroende på vad du har för krav på insättningen.

Menar du att du ska flytta element från en vektor till en annan?  Om jag tolkar dig rätt så vill du lägga alla j som är primtal in i vektor L? Då fungerar metoden append som lägger till elementet sist i listan.

Varför lägger du till en tom vektor till L (L.append([])
Varför ingår kontroll att j ingår i intervallet när du bara loopar alla j i intervallet? Dessutom eliminerar du ju elementet i*100 i kontrollen som ingår i din "for j in range..."

 

Laguna 28443
Postad: 30 okt 2021 19:09

Hur länge ska man hålla på? Tills listan primtal tar slut?

Lindehaven 820 – Lärare
Postad: 30 okt 2021 22:43
alix2a skrev:

Tänker att det sättet ovan är mer effektivt.

Om effektivitet är viktigt så bör programmet istället  iterera listan med primtal och räkna antal primtal i varje intervall. Antalet primtal i ett intervall är ju betydligt färre än antalet värden i intervallet.

Lindehaven 820 – Lärare
Postad: 31 okt 2021 23:33
alix2a skrev:

Vill skriva ett program som skriver ut antalet primtal i 100-intervall, alltså antalet primtal mellan 1 till 100, mellan 100 till 200, mellan 200 till 300 osv

Om du vill spara antalet primtal för varje intervall i en lista så kan du skriva så här:

N = 10
L = [0 for _ in range(N)]
for i in range(N):
    for j in range(i*100, (i+1)*100):
        if j in primtal:
            L[i] += 1

alix2a 416
Postad: 4 nov 2021 13:57

Tack för hjälpen alla! Nu fungerar det!

Svara Avbryt
Close