Obsah fóra
PravidláRegistrovaťPrihlásenie




Odpovedať na tému [ Príspevkov: 12 ] 
AutorSpráva
Offline

Užívateľ
Užívateľ
Obrázok užívateľa

Registrovaný: 01.04.07
Prihlásený: 28.04.07
Príspevky: 5
Témy: 3
Príspevok NapísalOffline : 01.04.2007 19:41

nazdar;nevedel by mi niekto pomoct s jednym cyklom v pascale?mal by urcovat vsetky prvocisla od 1 do n,teda vypisat ich za sebou do riadku.PLS


Offline

Užívateľ
Užívateľ
Obrázok užívateľa

Registrovaný: 17.11.06
Prihlásený: 31.12.07
Príspevky: 677
Témy: 9
Príspevok NapísalOffline : 01.04.2007 20:08

klasicky overovaním alebo eratostenovým sitom?


Offline

Užívateľ
Užívateľ
Obrázok užívateľa

Registrovaný: 01.04.07
Prihlásený: 28.04.07
Príspevky: 5
Témy: 3
Príspevok Napísal autor témyOffline : 01.04.2007 20:12

overovanim


Offline

Čestný člen
Čestný člen
pascal

Registrovaný: 09.05.05
Prihlásený: 07.12.16
Príspevky: 1294
Témy: 69
Bydlisko: - - -
Príspevok NapísalOffline : 01.04.2007 21:07

Kód:
program prvocisla;
uses crt;
var b,cislo,i,kolko: integer;

begin
clrscr;
writeln('Napiste cislo po ktore budeme hladat.');
readln(cislo);
b:=1;
Write('Najdene prvocisla: ');
while (b <= cislo) do begin
      for i:=2 to b do
          if (b mod i) = 0 then kolko:=kolko+1;
          if (kolko = 1) then write(b,', ');
      b:=b+1;
      kolko:=0;

end;
readkey;
end.


vystup píše:
Napiste cislo po ktore budeme hladat: 65
Najdene prvocisla: 2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47, 53, 59, 61,


Tak ?


Offline

Užívateľ
Užívateľ
Obrázok užívateľa

Registrovaný: 01.04.07
Prihlásený: 28.04.07
Príspevky: 5
Témy: 3
Príspevok Napísal autor témyOffline : 01.04.2007 21:18

jasne;diik


Offline

Užívateľ
Užívateľ
pascal

Registrovaný: 02.09.05
Prihlásený: 17.11.10
Príspevky: 154
Témy: 1
Príspevok NapísalOffline : 04.04.2007 17:14

Eratostenovo sito :
Kód:
#define N 1000

int main()
{
   int i, j, pole[N];
   
   for (i = 2; i < N; i ++) pole[i] = 1;
   for (i = 2; i < N; i ++)
   {
      for (j = i; i*j < N; j ++) pole[i*j] = 0;
      for (i = 2; i < N; i ++)
         if (pole[i] == 1) printf("%d", i);
   }

    printf("\n");
    return 0;
}


Offline

Užívateľ
Užívateľ
Obrázok užívateľa

Registrovaný: 17.11.06
Prihlásený: 31.12.07
Príspevky: 677
Témy: 9
Príspevok NapísalOffline : 04.04.2007 17:57

chlape, vieš aký je rozdiel medzi pascalom a céčkom? a okrem iného som sa pýtal ako to ma byť a písal overovaním.. ;)

BTW: tvoje riešenie je aj tak neefektívne, som si istý že by som ho spravil lepšie. Zbytočne prechádzaš cyklom veľa krát :)


Offline

Užívateľ
Užívateľ
pascal

Registrovaný: 02.09.05
Prihlásený: 17.11.10
Príspevky: 154
Témy: 1
Príspevok NapísalOffline : 05.04.2007 8:23

audiotrack píše:
chlape, vieš aký je rozdiel medzi pascalom a céčkom? a okrem iného som sa pýtal ako to ma byť a písal overovaním.. ;)

BTW: tvoje riešenie je aj tak neefektívne, som si istý že by som ho spravil lepšie. Zbytočne prechádzaš cyklom veľa krát :)
No ako keby to bolo jedno ze je to v C... To je taky problem si to prepisat do pascalu ??? nevidim v tom najmensi problem...
No tak ho skus spravit lepsie ;)


Offline

Užívateľ
Užívateľ
Obrázok užívateľa

Registrovaný: 17.11.06
Prihlásený: 31.12.07
Príspevky: 677
Témy: 9
Príspevok NapísalOffline : 05.04.2007 19:40

nechce sa mi to prepisovať, ale v tom prvom cykle for nemusíš prechádzať N krát cyklom ale iba po odmocninu z N. To exponencialne urýchly beh programu. V druhom cykle máš chybu, lebo ho máš zle ukončený. Posledný for už v ňom nemá byť, lebo inak ty vypíše aj čísla ako 15, 25 a iné. A tiež by som ten printf dal s formátovacím reťazcom "%d\n" aby ich nepísalo dokopy lebo to nejde rozlíšiť ktoré čislo kde začína a kde končí


Viac som to nepozeral, možno je ešte niekde inde chyba, ale myslím si že tak ako som to napísal by to bolo efektívnejšie

PS1: nie je to jedno, veľa ľudí nevie robiť vo viacerých jazykoch a pre takých je problem prepísať niečo z céčka do pascalu. Tá syntax je dosť rozdielna


Offline

Užívateľ
Užívateľ
pascal

Registrovaný: 02.09.05
Prihlásený: 17.11.10
Príspevky: 154
Témy: 1
Príspevok NapísalOffline : 07.04.2007 15:10

No tak najprv som hadal ze v ktorom cykle, ale potom som pochopil ze asi v tom druhom... :)

ale mal si pravdu, bolo to zle napisane (lebo som to pisal narychlo)

je to spravne s tou odmocninou, teda takto :
Kód:
#define N 102

int main()
{
   int i, j, a[N];
   
   for (i = 2; i < N; i ++) a[i] = 1;
   
   for (i = 2; i < (int)sqrt(N); i ++)
      for (j = i; i*j < N; j ++) a[i*j] = 0;
     
   for (i = 2; i < N; i ++)
       if (a[i]) printf("%4d", i);

    printf("\n");
    getch();
    return 0;
}


ale tak isto to funguje s (N/2) (a je to predsalen este kusok rychlejsie, pretoze div je strojova instrukcia :) ) takto :

Kód:
#define N 102

int main()
{
   int i, j, a[N];
   
   for (i = 2; i < N; i ++) a[i] = 1;
   
   for (i = 2; i < (N/2); i ++)
      for (j = i; i*j < N; j ++) a[i*j] = 0;
     
   for (i = 2; i < N; i ++)
       if (a[i]) printf("%4d", i);

    printf("\n");
    getch();
    return 0;
}


Ale este trebalo upresnit, ze program vypise vsetky prvocisla N-1...

Ale nakoniec o rychlost sa tu ani tak nejedna, kedze je to zakladny program najma na pochopenie algoritmu...a to myslim bolo hlavnym cielom...

P.S.: Samozrejme ze s tou rychlostou by sa dalo este pohrat, s nejakymi direktivami compilera...


Offline

Užívateľ
Užívateľ
Obrázok užívateľa

Registrovaný: 17.11.06
Prihlásený: 31.12.07
Príspevky: 677
Témy: 9
Príspevok NapísalOffline : 07.04.2007 15:19

Citácia:
ale tak isto to funguje s (N/2) (a je to predsalen este kusok rychlejsie, pretoze div je strojova instrukcia :) )
nemáš pravdu. Delenie sa síce vykoná skôr ako výpočet odmocniny, no pri N=10000 sa pri delení bude vykonávať cyklus 5000x a pri odmocnine iba 100x.


Offline

Užívateľ
Užívateľ
pascal

Registrovaný: 02.09.05
Prihlásený: 17.11.10
Príspevky: 154
Témy: 1
Príspevok NapísalOffline : 07.04.2007 16:50

audiotrack píše:
Citácia:
ale tak isto to funguje s (N/2) (a je to predsalen este kusok rychlejsie, pretoze div je strojova instrukcia :) )
nemáš pravdu. Delenie sa síce vykoná skôr ako výpočet odmocniny, no pri N=10000 sa pri delení bude vykonávať cyklus 5000x a pri odmocnine iba 100x.
Ano ved je to tak...
Ale inak ajtak je pravda aj co si povedal ze sa zbytocne prechadza cyklom vela krat, pretoze prvocislo sa da jednoducho urcit, ked je delitelne 2,3,5...a to urobit jednym cyklom a jednou podmienkou...i ked v niektorych pripadoch pri vysokom cisle N by sa mozno dalo polemizovat co je rychlejsie...asi to treba len vyskusat... skusim ked budem mat viac casu...


Odpovedať na tému [ Príspevkov: 12 ] 


Podobné témy

 Témy  Odpovede  Zobrazenia  Posledný príspevok 
V tomto fóre nie sú ďalšie neprečítané témy. Free Pascal a Turbo Pascal

v Assembler, C, C++, Pascal, Java

0

384

19.12.2014 13:18

Styracoz Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. pascal

v Assembler, C, C++, Pascal, Java

6

730

08.01.2009 17:45

majka090 Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. pascal

v Assembler, C, C++, Pascal, Java

2

1105

09.03.2007 14:08

misolax Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. pascal

v Assembler, C, C++, Pascal, Java

0

703

03.05.2009 12:35

ebb Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. Pascal

v Assembler, C, C++, Pascal, Java

4

2063

01.03.2018 8:02

MTK Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. Pascal

v Assembler, C, C++, Pascal, Java

7

632

09.10.2011 21:30

F3RY Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. Pascal

[ Choď na stránku:Choď na stránku: 1, 2 ]

v Assembler, C, C++, Pascal, Java

40

1472

11.12.2016 22:08

viki Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. pascal

v Assembler, C, C++, Pascal, Java

19

3059

30.04.2007 19:54

nikita Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. Pascal

v Assembler, C, C++, Pascal, Java

7

832

14.05.2011 20:04

F3RY Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. pascal

v Assembler, C, C++, Pascal, Java

2

572

24.06.2010 20:17

KatjushaMan Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. pascal...

v Assembler, C, C++, Pascal, Java

5

906

18.10.2008 19:02

redog Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. Pascal hudba

v Assembler, C, C++, Pascal, Java

6

604

18.04.2012 20:43

kemperik Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. Pascal otázka

v Assembler, C, C++, Pascal, Java

3

363

24.01.2011 14:41

prohibit Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. turbo pascal

v Assembler, C, C++, Pascal, Java

10

570

08.05.2013 21:06

Gregi555 Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. Faktorial - Pascal

v Assembler, C, C++, Pascal, Java

9

1675

28.09.2009 8:10

pizet Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. Pascal: Dátum

v Assembler, C, C++, Pascal, Java

2

346

09.12.2016 14:23

LadyD Zobrazenie posledných príspevkov


Nemôžete zakladať nové témy v tomto fóre
Nemôžete odpovedať na témy v tomto fóre
Nemôžete upravovať svoje príspevky v tomto fóre
Nemôžete mazať svoje príspevky v tomto fóre

Skočiť na:  

Powered by phpBB Jarvis © 2005 - 2024 PCforum, webhosting by WebSupport, secured by GeoTrust, edited by JanoF
Ako väčšina webových stránok aj my používame cookies. Zotrvaním na webovej stránke súhlasíte, že ich môžeme používať.
Všeobecné podmienky, spracovanie osobných údajov a pravidlá fóra