webForumDet fria alternativet

Lite BASIC-programmering

7 svar · 314 visningar · startad av trexter

trexterMedlem sedan mars 20021 889 inlägg
#1

Jag skulle göra ett program, som kollar om ett tal är prim, på min nyinförskaffade Ti-83. Prog. visar alltid "ja", oavsett värde på p.

Disp "skriv tal"
input (p)
for(i,2,p-1)
if p/i=round(p/i)
then
disp "ja"
stop
end
end
disp "nej"

Förutom att få koden att fungera är även förslag på smarta lösningar uppskattade. ;)

NickemannenMedlem sedan aug. 20003 575 inlägg
#2

var det inte

Input "Skriv här:",P

typ ? minns inte så mycket eller Promt "Skriv:här",P

trexterMedlem sedan mars 20021 889 inlägg
#3

Jag tror att syntaxen input(p) är riktig och även om den inte skullle vara det borde jag väl få något fel när jag kör koden.

LaspMedlem sedan juli 200012 980 inlägg
#4

Var har du iterationen?

Nexus86Medlem sedan okt. 20023 030 inlägg
#5

Du behöver inte köra for-loopen från 2 till p-1, det räcker gott och väl med 2 till 5. T.ex.

Talet 15: Delbart med 2, nej. Delbart med 3, ja. Alltså inget primtal.

Talet 23: Delbart med 2, nej. Delbart med 3, nej. Delbart med 4, nej. Delbart med 5, nej. Alltså ett primtal.

PeeerMedlem sedan mars 20025 907 inlägg
#6

Nexus86 skrev:

Du behöver inte köra for-loopen från 2 till p-1, det räcker gott och väl med 2 till 5. T.ex.

Talet 15: Delbart med 2, nej. Delbart med 3, ja. Alltså inget primtal.

Talet 23: Delbart med 2, nej. Delbart med 3, nej. Delbart med 4, nej. Delbart med 5, nej. Alltså ett primtal.

Fel!
Ta talet 49 (7*7) som ex. Det går inte att dela med varken 2,3,4 eller 5. Men inte är det ett primtal för det.

Däremot räcker det att kolla mellan 2 och sqrt(p).

trexterMedlem sedan mars 20021 889 inlägg
#7

Peeer skrev:

Nexus86 skrev:

Du behöver inte köra for-loopen från 2 till p-1, det räcker gott och väl med 2 till 5. T.ex.

Talet 15: Delbart med 2, nej. Delbart med 3, ja. Alltså inget primtal.

Talet 23: Delbart med 2, nej. Delbart med 3, nej. Delbart med 4, nej. Delbart med 5, nej. Alltså ett primtal.

Fel!
Ta talet 49 (7*7) som ex. Det går inte att dela med varken 2,3,4 eller 5. Men inte är det ett primtal för det.

Däremot räcker det att kolla mellan 2 och sqrt(p).

Det är riktigt, vilket framgår om man stryker alla multipler.
Tack för alll hjälp!

bohlinMedlem sedan mars 2000263 inlägg
#8

ändra
if p/i=round(p/i)
till
if p/i=round(p/i,0)
så funkar det kanske
,0 betyder 0 decimaler

125 ms totalt · 3 externa anrop · v20260731065814-full.0e50b1ef
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
122 ms — hämta tråd, inlägg och bilagor (db)