webForumDet fria alternativet

Lite BASIC-programmering

Programmering

7 svar · 316 visningar · startad av trexter

Medlem sedan mars 20021 889 inlägg
Frågan#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. ;)

Medlem 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

Medlem 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.

Medlem sedan juli 200012 978 inlägg
#4

Var har du iterationen?

Medlem 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.

Medlem 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).

Medlem 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!

Medlem 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

424 ms totalt · 4 externa anrop · v20260731065814-full.1dc6f849
289 ms — deklarationer (db)
0 ms — hämta statistik (cache)
132 ms — hämta tråd, inlägg och bilagor (db)
120 ms — ändringar (db)