Kezdőoldal » Számítástechnika » Programozás » C programozás: n db beolvasott...

C programozás: n db beolvasott szám közül hány prím? Az a baj, hogy a for ciklusomban mindig csak a kezdő értékre nézi:

Figyelt kérdés

for (oszto=2; oszto<= (a[i]/2) ; oszto++) { if ( (a[i]%oszto) ==0) {prim=0};} else{prim=1;} } , azaz oszto=2-re. és ha a szám nem osztható 2-vel, prímnek veszi. A prim=0 azt jelenti, hogy van egy változóm, ami ha a szám nem prím, akkor 0, ha prím, akkor 1, és ezt akarnám megszámolni egy másik változóval...mit kéne csinálnom, hogy végignézze az osztókat?

köszi előre is :)

(gondolom egyébként hogy a for ciklus magja a hibás, át kéne írni úgy, hogy előbb nézze végig a számokat a beolvasott szám feléig, és utána nézze meg, hogy p-nek 1-nek vagy 0-nak kéne lennie, de nem tudom :( )


2012. márc. 5. 18:14
 1/3 coopper ***** válasza:

Szia.


Először is leszögezem, hogy nem vagyok C-s.


Másodszor mint ahogy Te is irtad nem j= a ciklusmag.


Mivel a cikluson belül egyszer 0 lesz a prim értéke egyszer meg 1 attól függően, hogy mi lesz a maradékos osztás eredménye.


Én a cikluson kivülre raknám a primet adnék neki kezdőértéket és belül csak azt vizsgálnám, hogy osztható-e az adot szám. Minta :


prim=1

for (oszto=2; oszto<= (a[i]/2) ; oszto++) {

if ( (a[i]%oszto) ==0) {prim=0};

}

if (prim=1) {

darab=darab+1

}


Ha optimalizálni akarod akkor a ciklust while-vel kellene megcsinálni, mivel nincs értelme végigmenni akár már 5-ig se, ha a szám kettővel osztható akkor már biztosan nem prim.


valahogy igy :

prim=1

oszto=1

while (oszto<=(a[i]/2 and prim=1) {

oszto++

if ( (a[i]%oszto) ==0) {prim=0};

}



Sok sikert.

Üdv.



Szerintem cikluson kivűl le

2012. márc. 5. 18:35
Hasznos számodra ez a válasz?
 2/3 A kérdező kommentje:
köszönöm szépen =)
2012. márc. 5. 18:40
 3/3 anonim ***** válasza:
További optimalizálási lehetőségek, hogy csak a szám négyzetgyökéig teszteled az osztást, valamint nyilvánvaló okok miatt elegendő a páratlan számokra (2-es kivételével) leellenőrizni..
2012. márc. 6. 15:40
Hasznos számodra ez a válasz?

Kapcsolódó kérdések:




Minden jog fenntartva © 2025, 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!