[ 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 | 3
NapísalOffline : 01.04.2007 19:41 | pascal

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 | 9
NapísalOffline : 01.04.2007 20:08 | pascal

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 | 3
Napísal autor témyOffline : 01.04.2007 20:12 | pascal

overovanim


Offline

Čestný člen
Čestný člen
pascal

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

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 | 3
Napísal autor témyOffline : 01.04.2007 21:18 | pascal

jasne;diik


Offline

Užívateľ
Užívateľ
pascal

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

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 | 9
NapísalOffline : 04.04.2007 17:57 | pascal

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: 153
Témy: 1 | 1
NapísalOffline : 05.04.2007 8:23 | pascal

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 | 9
NapísalOffline : 05.04.2007 19:40 | pascal

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: 153
Témy: 1 | 1
NapísalOffline : 07.04.2007 15:10 | pascal

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 | 9
NapísalOffline : 07.04.2007 15:19 | pascal

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: 153
Témy: 1 | 1
NapísalOffline : 07.04.2007 16:50 | pascal

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...


 [ Príspevkov: 12 ] 


pascal



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 Ostatné

0

473

19.12.2014 13:18

Styracoz

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

pascal

v Ostatné

0

813

03.05.2009 12:35

ebb

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

Pascal

v Kôš

1

30

06.11.2018 14:38

werwest

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

Pascal

v Ostatné

7

733

09.10.2011 21:30

F3RY

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

pascal

v Ostatné

19

3198

30.04.2007 19:54

nikita

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

Pascal

v Ostatné

7

956

14.05.2011 20:04

F3RY

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

pascal

v Ostatné

2

679

24.06.2010 20:17

KatjushaMan

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

Pascal

v Ostatné

4

2669

01.03.2018 8:02

MTK

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

pascal...

v Ostatné

5

1013

18.10.2008 19:02

redog

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

Pascal

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

v Ostatné

40

1751

11.12.2016 22:08

viki

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

pascal

v Ostatné

6

836

08.01.2009 17:45

majka090

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

pascal

v Ostatné

2

1212

09.03.2007 14:08

misolax

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

Pascal problem

v Ostatné

4

528

12.09.2012 7:43

strider

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

pascal pomoc

v Ostatné

0

990

12.06.2007 13:07

gorky22

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

Pascal-cisla

v Ostatné

8

811

20.11.2010 13:49

elementstyle

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

Pascal - podprogram

v Ostatné

2

952

03.12.2008 21:08

MichalAngello



© 2005 - 2026 PCforum, edited by JanoF