Avatar billede montago Praktikant
29. april 2004 - 19:00 Der er 4 kommentarer og
1 løsning

Primtal - søg og erstat

okay... jeg har lavet (og hugget lidt) denne her super duper smarte primtals generator som kan spytte primtal ud en'mass

primtallene gemmer jeg i et Array navgivet PrimArr()

i den anden for løkke finder jeg primtal i primtallene
problemet er at den finder primtallene alle steder...
men jeg er kun intresseret i at finde dem i slutningen af primtallet...

fx indeholder 9137, 137 som det største primtal...
men 9199, 919 som det største

er det muligt endten kun at finde primtal i slutningen af primtallet... eller få vist primtal andre steder, i andre farver... fx grøn


primtallene bliver uskrevet således:
For a = 0 to 2000
    Response.write "<tr><td>"
    Response.write "Prime nr: " & a & " - "
    Response.write "</td><td>" & PrimArr(a) & "</td><td> - "
    For b = a-1 to 0 step -1
        Unique = True
        if inStr(PrimArr(a),PrimArr(b)) Then
            toshow = "<font color=""red"">" & PrimArr(b) & "</font>"
            Response.Write Replace(PrimArr(a),PrimArr(b),toshow)
            Unique = False
            exit for
        end if
    Next
    If Unique Then
        Response.Write "<font color=""BLUE"">" & PrimArr(a) & " Unique Prime</font>"
    end if
    Response.write "</tr></td>"
Next
Avatar billede montago Praktikant
29. april 2004 - 19:02 #1
ps... det tager kun 10 sek at printe de første 250.000 primtal med den funktion jeg bruger
Avatar billede montago Praktikant
29. april 2004 - 19:06 #2
jeg bruger en function ved navn isPrime(tal) til at finde ud af om et givent tal er et primtal...

er det muligt at bruge denne funktion, så jeg ikke behøver at loope mit array igennem 2000 gange (2000*2000 = 4.000.000 læsninger!!!)
Avatar billede montago Praktikant
29. april 2004 - 19:19 #3
For a = 0 to 2000
    Response.write "<tr><td>"
    Response.write "Prime nr: " & a & " - "
    Response.write "</td><td>" & PrimArr(a) & "</td><td> - "
    Unique = True
    For b = 1 to Len(PrimArr(a)) -1
        PrimeStrRev = StrReverse(PrimArr(a))
        PrimeStrRevMid = Mid(PrimeStrRev,1,b)
        if IsPrime(StrReverse(PrimeStrRevMid)) Then
            Response.Write StrReverse(PrimeStrRevMid) & ","
            Unique = False
        end if
    Next
    If Unique Then
        Response.Write "<font color=""BLUE"">Unique Prime</font>"
    end if
    Response.write "</tr></td>"
Next
Avatar billede montago Praktikant
29. april 2004 - 19:19 #4
jeg fant ud af det selv ;-)
Avatar billede montago Praktikant
29. april 2004 - 19:20 #5
Til de intresserede:

<%
function IsPrime(ByRef pLngNumber)
Dim lLngSquare
Dim lLngIndex
  IsPrime = False
  if pLngNumber < 2 Then Exit function
  if pLngNumber Mod 2 = 0 Then Exit function
  lLngSquare = Sqr(pLngNumber)

For lLngIndex = 3 To lLngSquare Step 2
  if pLngNumber Mod lLngIndex = 0 Then Exit function
Next

  IsPrime = True
End function
%>



<table width="500" border="0" cellpaddig="0" cellspacing="0">
<%
Dim PrimArr(2000)
a = 1
Do while Primnr < 2000
a = a + 2
  if IsPrime(a) then
    Primnr = Primnr + 1
    PrimArr(Primnr) = a
  end if
Loop
PrimArr(0) = 2

For a = 0 to 2000
    Response.write "<tr><td>"
    Response.write "Prime nr: " & a & " - "
    Response.write "</td><td>" & PrimArr(a) & "</td><td> - "
    Unique = True
    For b = 1 to Len(PrimArr(a)) -1
        PrimeStrRev = StrReverse(PrimArr(a))
        PrimeStrRevMid = Mid(PrimeStrRev,1,b)
        if IsPrime(StrReverse(PrimeStrRevMid)) Then
            Response.Write StrReverse(PrimeStrRevMid) & ","
            Unique = False
        end if
    Next
    If Unique Then
        Response.Write "<font color=""BLUE"">Unique Prime</font>"
    end if
    Response.write "</tr></td>"
Next
%>
</table>
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