Kezdőoldal » Számítástechnika » Programozás » C programozásban prímszám-e...

C programozásban prímszám-e feladatot gyökösként is megtudom csinálni, csak nem teljesen értem. A kérdés tehát az lenne, hogy hogyan végzi el a számításokat a gyökös prímszám ellenőrző?

Figyelt kérdés

Tudtommal ha úgy adom meg,hogy (részlet)

i<sqrt(szam)

akkor elvileg csak a szám gyökéig nézi,de a gyök 15 az 3,8729 ,de idáig ez mind prímszám mert ugyebár a 2 és a 3 is prím.De akkor most a 3,8729-t felkerekíti 4-re,mert a 15 ugyebár nem prím.



2016. nov. 28. 10:15
1 2
 1/14 anonim ***** válasza:
És ha felkerekíti, akkor mi van?
2016. nov. 28. 10:30
Hasznos számodra ez a válasz?
 2/14 A kérdező kommentje:

Akkor már 4 lesz és ugyebár az osztója a 2-nek ezért már nem prím.

De a kérdés az,hogy felkerekíti-e és úgy vizsgálja meg?

2016. nov. 28. 10:35
 3/14 tabaki ***** válasza:
100%

„3,8729-t felkerekíti 4-re”


Ugyan, miért kerekítené fel? A gyök lehet lebegőpontos szám, attól még összehasonlíthatod egy egésszel. De ha valami miatt egészként akarod tárolni, akkor kétségkívül felkerekíted. És akkor mi van? Ott egye meg a fene.

Úgy tűnik, mintha nem lenne világos a számodra a gyökig való vizsgálat szerepe. A lényeg, hogy a szám gyökénél nagyobb esetben már olyan osztópárok következnek, amelyeket már voltak, és ezeknek a fölösleges vizsgálatát spórolod meg a korlátozással. Persze, előre meg lehetne nézni, hogy kerekítés után nagyobb lett-e a gyök, és akkor elég eggyel kevesebbszer vizsgálni -- csak éppen több vele a macera, mint a haszon, azalatt már inkább végezze el azt az egyetlen szükségtelen lépést.

2016. nov. 28. 10:48
Hasznos számodra ez a válasz?
 4/14 anonim ***** válasza:

De ha kerekítene, akkor sem lenne szükségtelen lépés, hiszen 3 < 3,87, és isteni szerencsénkre 3 < 4 detto igaz; még nagyobb szerencsénkre viszont a 4 < 4 már nem igaz.

Ha kerekít, 3-ig számol el, ha nem kerekít, akkor 3-ig számol el. Ezen nem éri meg rugózni.

2016. nov. 28. 10:54
Hasznos számodra ez a válasz?
 5/14 tabaki ***** válasza:

@#2:

Ja, kezd tisztulni a kép, marad az eleje annak, amit írtam. Sqrt(akármi) akkor sem egész számot ad vissza, ha akármi amúgy egész szám volt. Amíg erőnek erejével bele nem rakod egy int változóba, addig nincs vele probléma, mellesleg akkor viszont szerintem nem fölfelé kerekít, hanem levágja a törtrészt -- de ezt erősítse meg olyan, aki ismeri a C-t.

2016. nov. 28. 10:59
Hasznos számodra ez a válasz?
 6/14 anonim ***** válasza:

Viszont gyök(25)-tel szívás lesz így, mivel az 5

igy i<gyök(25) esetén az i=5-öt nem fogja vizsgálni, azaz a 25-öt prímszámnak fogja venni.

2016. nov. 28. 11:01
Hasznos számodra ez a válasz?
 7/14 tabaki ***** válasza:

@#5:

Hüm, igaz... Hajlamos vagyok túlbonyolítani, bocs.

2016. nov. 28. 11:03
Hasznos számodra ez a válasz?
 8/14 anonim ***** válasza:
60%

#6os vagyok. De hogy valami hasznosat is mondjak, sztem így írd a ciklust:

for (int i=2; i*i<=szam; i++)

Ekkor nincs gyökszámítás, ami nem "olcsó", nincs lebegőpontos szám, stb.

2016. nov. 28. 11:05
Hasznos számodra ez a válasz?
 9/14 A kérdező kommentje:

Mostmár értem :D köszönöm :D

#4 "3 < 3,87, és isteni szerencsénkre 3 < 4 detto igaz; még nagyobb szerencsénkre viszont a 4 < 4 már nem igaz."

Így már értem :D

#6 A gyök 25-re meg ugyebár az a megoldás,hogy növelem az i-t és maradékos osztást végzek (0-e a maradék).

#3 sztem ugyanarra gondoltál mint #4 :D

2016. nov. 28. 11:10
 10/14 anonim ***** válasza:

Mindenképp <= vizsgálat kell, különben gond lesz az olyan számokkal, mint a 25, aminek egész a négyzetgyöke.


Az említett 15 esetén ugye 2-vel nem osztható, megy tovább, 3-mal osztható, tehát ki is léphetünk: nem prímszám. Ha kerekítve 4-ig megvizsgálná, akkor sem volna semmi, mert a 3 miatt már megállapítottuk, hogy nem prím.

Tehát: 2-től addig kell vizsgálni, amíg nem találsz egy osztót, de legfeljebb a négyzetgyökéig. 15 esetében: 4-gyel nem osztható, de ami 2-vel nem osztható, az 4-gyel sem. 5-tel osztható, az eredmény 3, de ugye 3-mal már tudjuk, hogy osztható, szóval ezt is fölösleges vizsgálni és így tovább.

Rengeteg ciklust lehet így megspórolni.

2016. nov. 28. 11:22
Hasznos számodra ez a válasz?
1 2

Kapcsolódó kérdések:





Minden jog fenntartva © 2024, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu

A weboldalon megjelenő anyagok nem minősülnek szerkesztői tartalomnak, előzetes ellenőrzésen nem esnek át, az üzemeltető véleményét nem tükrözik.
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!