Kezdőoldal » Számítástechnika » Programozás » Mit gondoltok a programozási...

Mit gondoltok a programozási gondolkodásomról?

Figyelt kérdés

Még viszonylag kezdő C++ programozó vagyok, és sokszor gyakorlok: nézegetek interneten feladatokat és azokat oldom meg. Sokszor találtam már magam olyan helyzetben életem során (nem feltétlenül a programozásban), hogy túlbonyolítok dolgokat, mikor azt sokkal egyszerűbben meg lehetett volna oldani. Ezért egy olyan kérdéssel fordulok hozzátok, hogy szerintetek mennyire sikerült jól ennek a feladatnak a megoldása:


Írj egy programot, amely kér a felhasználótól egy pozitív egész számot, és utána kiírja az összes, ennél a számnál kisebb olyan pozitív egész számot, amely nem prím!


Megoldásom:


#include <iostream>

using namespace std;


int Prim(int szam)

{

int oszto = 0;

for (int i=1; i<szam; i++)

{


if (szam%i == 0) oszto++;

}

if (oszto > 2) return 0;

else return 1;

}


int main()

{

int a = -1;

while (a < 0)

{

cout << "Szam: ";

cin >> a;

}

for (int i = a; i > 0; i--)

{

if (Prim(i) == 0) cout << i << endl;

}


return 0;

}



2012. máj. 31. 15:54
1 2
 11/13 anonim ***** válasza:
0%

"A Fermat-prímteszt minden prímszámról helyesen eldönti hogy prím, viszont vannak számok melyekre prímet ad pedig nem azok, ezek az ún. Fermat-álprímek. Vagyis ha azt adja vissza hogy nem prím akkor tényleg nem az."


""..cserébe viszont beáldozzák a teljes bizonyosságot"

Ez nem igaz."


Nem tűnik fel, mennyire ellentmondasz magadnak? :D


Először azt állítod, hogy vannak olyan nem prím számok, melyeket prímként azonosít. Ebben igazad is van.(Hogy mennyire ritkák az ilyen számok, abba ne menjünk bele, mert nem ez a lényeg)

Aztán pedig kijelented, hogy nem igaz, hogy feladom a teljes bizonyosságot, ha így tesztelek.


Most gondolj bele, ha 1től Nig végigmész a számokon, és akár csak egy is van, amit a Fermat teszt prímként azonosít, holott nem az, akkor már nem jó eredményt kapsz, ugyanis a feladat az, hogy az összes nem prímszámot kiírasd.


Érteni is kéne, amiről beszélsz, nem csak bemagolni, +legalább önmagadnak nem kéne ellentmondani.


Röhej, hogy már jó 5 éve diplomáztam, de még mindig jobban emlékszek a dolgokra, mint a nagymellényű egyetemisták.. :D

2012. jún. 1. 18:44
Hasznos számodra ez a válasz?
 12/13 anonim ***** válasza:
0%
Látom te még mindig nem érted... A fermat teszt lényege, hogy viszonylag gyorsan kiszűri a nem prímeket, és elég megvizsgálni azokat a számokat, amelyek lehetnek prímek. Attól, hogy te lediplomáztál x éve, nem jelenti azt, hogy okosabb vagy bárkinél is...
2012. jún. 1. 20:27
Hasznos számodra ez a válasz?
 13/13 anonim ***** válasza:
73%

"Nem tűnik fel, mennyire ellentmondasz magadnak? :D"

Nincs ellentmondás, (a Fermat teszt erőssége a nagyon nagy számoknál mutatkozik meg.) A Fermat teszt gyorsan kiszűr egy csomó számot melyeken mindegyiket végig ellenőrizni sokkal több idő lenne, mint Fermat tesztelni, nem áldozzák be a teljes bizonyosságot,mert elég csak azokat a számokat ellenőrizni melyekre prímet adott a Fermat-prímteszt, írtam hogy használják a Miller–Rabin-teszt-et.

Ezt különböző alapokra lefuttatják az adott számon, ha mondjuk 100 különböző alapra lefuttatják és prímet ad mindre akkor a tévedés valószínűsége 1:2^100 (vagy még kisebb), ami elfogadható, kisebb az esélye mint annak hogy elektorfizikai okból, a gép tévedjen vagyis hogy egy bit invertálódjon. Hozzáteszem hogy van determinisztikus polinomidejű prímtesztelő algoritmus is, de gyorsabb ha előtte a Fermat tesztel kiszűrünk egy csomó számot.

2012. jún. 1. 21:41
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!