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
 11/14 A kérdező kommentje:
Tényleg :D nem tudom miért de el is felejtettem,hogy osztója a 3 is xD Így már értem,hogy miért nem volt eleinte érthető a kérdés :D de választ kaptam olyanra is ami később hasznos lehet:D
2016. nov. 28. 11:25
 12/14 tabaki ***** válasza:

@#9:


„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).”


Inkább az, hogy <= feltétel is létezik a világon. Bár törtszámok esetén egyenlőségre vizsgálni mindig kockázatos, tehát azt előtte még helyre kéne tenni, hogy mit tekintsen egyenlőnek.


De szerintem #8 megoldása tisztább és jóval takarékosabb, nem egészen értem, hogy miért pontozta le valaki.

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

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


Az efféléken meg ne lepődj meg. A fogalmazgatás meg a teázás időbe telik, és néha megesik, hogy a válasz beküldése előtt elfelejtem ellenőrizni, nem válaszolt-e közben más, esetleg valami sokkal okosabbat.

2016. nov. 28. 11:53
Hasznos számodra ez a válasz?
 14/14 SimkoL ***** válasza:

Beszállhatok én is egy megoldással ?


#include <stdio.h>

#include <stdlib.h>

#include <math.h>


int prime(int szam)

{

if (szam == 2) return 1;

if ((szam <= 1) || (szam % 2 == 0)) return 0;

int i = 3, meddig = sqrt(szam), igaz = (szam % 2) != 0;

while ((igaz) && (i <= meddig)){

igaz = (szam % i) != 0;

i += 2;

}

return igaz;

}


int main()

{

int i;

for (i = 1; i < 50; i++)

if (prime(i)) printf("prim: %d\n", i);

else

printf("nem prim: %d\n", i);

system("PAUSE");

return 0;

}

2016. nov. 28. 12:02
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!