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.
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?
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?
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..."
Hur länge ska man hålla på? Tills listan primtal tar slut?
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.
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
Tack för hjälpen alla! Nu fungerar det!