Kezdőoldal » Számítástechnika » Programozás » Miért hibázik a prímszámkereső...

Miért hibázik a prímszámkereső programom?

Figyelt kérdés

Ez egy program ami egy beírt intervallumon belül kiírja az összes prímszámot .A hiba az az , hogy totál véletlenszerűen nem ír ki bizonyos prímeket . Van úgy mindet megtalálja ,van úgy egyet kihagy másikban az van meg és megint egy másik hiányzik .

A program amúgy nagyon gyors (a maga módján) 2000000-ig 15 másodperc alatt kiszámolja a prímeket .

Hallottam ilyenről ,hogy a natív kódú (ami közvetlenül a processzoron fut) programok ejthetnek számítási hibákat.

A forráskód hibátlan , randomizálás nincs benne szóval a hibát erre tudnám visszavezetni .

Ha valaki tudná mi a gond vagy ötlete is van a megoldásra kérem írja le .



2015. júl. 15. 10:34
1 2 3
 1/25 anonim ***** válasza:
100%

Hibás az algoritmus.

A processzor által ejtett számítási hibák ennél sok milliószor ritkábbak.

2015. júl. 15. 10:47
Hasznos számodra ez a válasz?
 2/25 anonim ***** válasza:
100%

"A forráskód hibátlan"

Ez azért veszélyes kijelentés. Be tudnád esetleg másolni ezt a kódrészletet?

2015. júl. 15. 10:48
Hasznos számodra ez a válasz?
 3/25 anonim ***** válasza:
100%
Ha hibátlan a kódod, akkor működne. :) A 15 sec 2 millióig pedig elég lassú, van még mit csiszolgatnod azon az algoritmuson. Összedobtam egy pársoros kódot, az 0,3 sec alatt számolja ki addig, és még lehetne rajta optimalizálni valószínűleg. Mik az algoritmusod lépései? Továbbá másold be a kódot is.
2015. júl. 15. 11:21
Hasznos számodra ez a válasz?
 4/25 anonim ***** válasza:

+1 a hibás kódra

+1 az nagyon lassú


"Hallottam ilyenről ,hogy a natív kódú (ami közvetlenül a processzoron fut) programok"


Na most ezt hogy is? Például a java programod nem natív, de a jvm, amin fut az már nagy valószínűséggel igen. Az meg akkor ejthet hibákat -> tehát a programod is.. ?

2015. júl. 15. 19:31
Hasznos számodra ez a válasz?
 5/25 A kérdező kommentje:

Erősen kétlem kedves 11:21 ,hogy "összedobtál" egy olyan programot ami 0,3s alatt teljesíti a feladatot .Kérlek írd le miben írtad azt a pársoros kódot és ,hogy milyen gépen futtattad .

elég kusza ez főleg azért van mert próbáltam mérsékelni a számításokat úgy ,hogy a program nem számolja ki ,hogy osztható-e öttel ,hanem ötösével lépked felfele a páratlan számok listáján:

#include <stdio.h>

int main()

{

long oszto,i,beolvasas,legnagyobb,gyok,korigalooszto,korigalogyok;

int otszamlalo,prim;

while (4<5)

{

printf("\n####################################");

printf("\n\nlarger than:");

scanf("%d",&beolvasas);

printf("smaller than:");

scanf("%d",&legnagyobb);

if (beolvasas <2 )

{

beolvasas = 2;

}

//Ez a rész egy bugot korigal ami egy optimalizacióból ered

//A beírt legkissebbet 5-tel végződőre számolja fel és addig

//megállapítja , hogy az prím-e . Azért teszi ezt mert az "otszamlalo"

//kihajdja az ottel vegződőkek mivel azok öttel oszthatók

while ((beolvasas%5!=0 )||(beolvasas%10==0 ))

{

prim =0;

korigalogyok=beolvasas/2+1;

for (korigalooszto=2;korigalooszto<korigalogyok;korigalooszto+=1)

{

if (beolvasas%korigalooszto==0)

{

prim = 1;

korigalooszto = korigalogyok;

}

}

if (prim == 0)

{

printf("%d\n",beolvasas);

}

beolvasas+=1;//itt számolja fel

}

if (beolvasas == 5)

{

printf("5\n");

}

//Itt fejeződik be a 5 re való redukálás

for (i=beolvasas;i<legnagyobb;i+=2)

{

otszamlalo +=1;

if (otszamlalo < 5)

{

prim = 0;

gyok=sqrt(i)+1;

for (oszto=3;oszto<gyok;oszto+=2)

{

if (i%oszto==0)

{

prim = 1;

oszto = gyok;

}

}

if (prim == 0)

{printf("%d\n",i);}

}

else

{otszamlalo=0;}

}

}

return 0;

}

2015. júl. 15. 20:32
 6/25 anonim ***** válasza:

Nekem az utolsó hibátlan kód amit írtam, az ezt volt:


<?php print('Hello World!'); ?>


:)

2015. júl. 15. 20:40
Hasznos számodra ez a válasz?
 7/25 anonim ***** válasza:
100%

"while (4<5)"

Nem is olvastam tovább.

A kódod hibás, hidd el.

2015. júl. 15. 20:49
Hasznos számodra ez a válasz?
 8/25 anonim ***** válasza:
100%
Atyaúristen mi a szar ez.
2015. júl. 15. 20:50
Hasznos számodra ez a válasz?
 9/25 A kérdező kommentje:
Esetleg lehet kommentálni is , mi kivetni valót talál benne ki While(4<5)-tel mi a gond MOND MEG ,az a hiba ?. Várom az első kommentet attól aki le is futtatta köszönöm.
2015. júl. 15. 20:57
 10/25 anonim ***** válasza:
100%

Hozzá nem nyúlok ehhez.

Töröld ki az egészet és nézz utána legalább wikipedián hogy kell prímeket keresni.

Adott N-ig prím keresésre Eratoszthenész szitája a klasszikus módszer.

2015. júl. 15. 21:06
Hasznos számodra ez a válasz?
1 2 3

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!