| | |
| Stránka: 1 z 1
| [ Príspevkov: 12 ] | |
Autor | Správa |
---|
Registrovaný: 01.04.07 Prihlásený: 28.04.07 Príspevky: 5 Témy: 3 | Napísal PQIer: 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
|
|
Registrovaný: 17.11.06 Prihlásený: 31.12.07 Príspevky: 677 Témy: 9 |
klasicky overovaním alebo eratostenovým sitom?
|
|
Registrovaný: 01.04.07 Prihlásený: 28.04.07 Príspevky: 5 Témy: 3 | Napísal autor témy PQIer: 01.04.2007 20:12 | |
|
overovanim
|
|
Registrovaný: 09.05.05 Prihlásený: 07.12.16 Príspevky: 1294 Témy: 69 Bydlisko: - - - |
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 ?
|
|
Registrovaný: 01.04.07 Prihlásený: 28.04.07 Príspevky: 5 Témy: 3 | Napísal autor témy PQIer: 01.04.2007 21:18 | |
|
jasne;diik
|
|
Registrovaný: 02.09.05 Prihlásený: 17.11.10 Príspevky: 154 Témy: 1 |
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; }
|
|
Registrovaný: 17.11.06 Prihlásený: 31.12.07 Príspevky: 677 Témy: 9 |
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
|
|
Registrovaný: 02.09.05 Prihlásený: 17.11.10 Príspevky: 154 Témy: 1 |
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
|
|
Registrovaný: 17.11.06 Prihlásený: 31.12.07 Príspevky: 677 Témy: 9 |
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
|
|
Registrovaný: 02.09.05 Prihlásený: 17.11.10 Príspevky: 154 Témy: 1 |
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...
|
|
Registrovaný: 17.11.06 Prihlásený: 31.12.07 Príspevky: 677 Témy: 9 |
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.
|
|
Registrovaný: 02.09.05 Prihlásený: 17.11.10 Príspevky: 154 Témy: 1 |
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...
|
|
| Stránka: 1 z 1
| [ Príspevkov: 12 ] | |
Podobné témy | Témy | Odpovede | Zobrazenia | Posledný príspevok |
---|
| Free Pascal a Turbo Pascal v Assembler, C, C++, Pascal, Java | 0 | 384 | 19.12.2014 13:18 Styracoz | | pascal v Assembler, C, C++, Pascal, Java | 6 | 730 | 08.01.2009 17:45 majka090 | | pascal v Assembler, C, C++, Pascal, Java | 2 | 1105 | 09.03.2007 14:08 misolax | | pascal v Assembler, C, C++, Pascal, Java | 0 | 703 | 03.05.2009 12:35 ebb | | Pascal v Assembler, C, C++, Pascal, Java | 4 | 2063 | 01.03.2018 8:02 MTK | | Pascal v Assembler, C, C++, Pascal, Java | 7 | 632 | 09.10.2011 21:30 F3RY | | Pascal [ Choď na stránku: 1, 2 ] v Assembler, C, C++, Pascal, Java | 40 | 1472 | 11.12.2016 22:08 viki | | pascal v Assembler, C, C++, Pascal, Java | 19 | 3059 | 30.04.2007 19:54 nikita | | Pascal v Assembler, C, C++, Pascal, Java | 7 | 832 | 14.05.2011 20:04 F3RY | | pascal v Assembler, C, C++, Pascal, Java | 2 | 572 | 24.06.2010 20:17 KatjushaMan | | pascal... v Assembler, C, C++, Pascal, Java | 5 | 906 | 18.10.2008 19:02 redog | | Pascal hudba v Assembler, C, C++, Pascal, Java | 6 | 604 | 18.04.2012 20:43 kemperik | | Pascal otázka v Assembler, C, C++, Pascal, Java | 3 | 363 | 24.01.2011 14:41 prohibit | | turbo pascal v Assembler, C, C++, Pascal, Java | 10 | 570 | 08.05.2013 21:06 Gregi555 | | Faktorial - Pascal v Assembler, C, C++, Pascal, Java | 9 | 1675 | 28.09.2009 8:10 pizet | | Pascal: Dátum v Assembler, C, C++, Pascal, Java | 2 | 346 | 09.12.2016 14:23 LadyD |
| 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
|
|