Optimalisert kode for å finne primtall
Posted: 24/10-2011 10:15
Merkelig nok, virker det ikke som den innebydge funksjonen i matlab for å finne primtall er spesielt optimalisert. Når jeg kjørte den mot min kode, var min som oftest raskere. Om enn ikke med så mye.
Spørsmålet mitt blir da like mye matematisk som basert på programmering.
Hva er den mest effektive metoden en kan benytte seg av for å teste om et tilfeldig tall er primtall i matlab?
Selv tenkte jeg med en gang "Sieve of Eratosthene" men den var litt vanskelig å implementere.
Hadde vært artig om noen skrev noen koder, og sammenlignet for å teste hastighet, og kanskje også nøyaktighet ^^
------------------------------------------
----------------------------------------------
Litt usikker på om denne funker, men testet den for et par tall. Og den gir meg i det minste rett svar, for de få tallene jeg prøvde.
edit: virker ikke helt optimalt, for defleste verdier er den lavere. Mens for ndre går dn i taket.
Spørsmålet mitt blir da like mye matematisk som basert på programmering.
Hva er den mest effektive metoden en kan benytte seg av for å teste om et tilfeldig tall er primtall i matlab?
Selv tenkte jeg med en gang "Sieve of Eratosthene" men den var litt vanskelig å implementere.
Hadde vært artig om noen skrev noen koder, og sammenlignet for å teste hastighet, og kanskje også nøyaktighet ^^
------------------------------------------
Code: Select all
function Y = Primtall(a)
n=1;
if a<2
Y=0;
return
else
for i=2:n:(floor(sqrt(a)))
if a/i==round(a/i)
Y=0;
return
end
n=n+1;
end
end
Y = 1;
end
Litt usikker på om denne funker, men testet den for et par tall. Og den gir meg i det minste rett svar, for de få tallene jeg prøvde.
edit: virker ikke helt optimalt, for defleste verdier er den lavere. Mens for ndre går dn i taket.