Obsah fóra
PravidláRegistrovaťPrihlásenie




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

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

Registrovaný: 04.08.08
Prihlásený: 28.10.11
Príspevky: 152
Témy: 42
Príspevok NapísalOffline : 31.10.2008 22:56

Mohol by takto vyzerat program na zistenie ci je dane cislo prvocislo ?
Ak viete jednoduchsie riesenia,prosim napiste.

Kód:
program prvocisla;
uses crt;
var x,i,n,vysledok,delitel:integer;
begin
clrscr;

  repeat
    i:=2;
    delitel:=0;
    readln(n);
    x:=trunc(sqrt(n));
    if (n = 0) or (n = 1) then writeln('Cislo ',n,' nie je prvocislo !')
    else
    begin
      while (i <= x) do
      begin
        vysledok:= n mod i;
        if (vysledok = 0) then delitel:=delitel + 1;
        i:=i+1;
      end;
      if (delitel > 0) then writeln('Cislo ',n,' nie je prvocislo !')
      else writeln('Cislo ',n,' je prvocislo !');
    end;
  until (n=0);

end.


Offline

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

Registrovaný: 30.04.08
Prihlásený: 15.05.15
Príspevky: 884
Témy: 3
Príspevok NapísalOffline : 01.11.2008 16:46

Podla mna nemusis hladat pocet vsetkych delitelov, staci, ked najdes jedneho rozneho od 1 a uz vies, ze zadane cislo nie je prvocislo.
Kód:
program prvocisla;
uses crt;
var x,i,n,delitel:integer;
begin
clrscr;

  repeat
    i:=2;
    delitel:=0;
    readln(n);
    x:=trunc(sqrt(n));
    if (n = 0) or (n = 1) then writeln('Cislo ',n,' nie je prvocislo !')
    else
    begin
      while ((i <= x) and (delitel<>1)) do
      begin
        if (n mod i=0) then delitel:=1;
        i:=i+1;
      end;
      if (delitel = 1) then writeln('Cislo ',n,' nie je prvocislo !')
      else writeln('Cislo ',n,' je prvocislo !');
    end;
  until (n=0);

end.

V tomto pripade sa cyklus while skonci pri najdeni prveho delitela, cize nehlada ostatnych delitelov. :)







_________________
Empty your memory, with a free()… like a pointer!
If you cast a pointer to an integer,
it becomes the integer, if you cast a pointer to a struct, it becomes the struct…
The pointer can crash…, and can overflow…
Be a pointer my friend…
Offline

Užívateľ
Užívateľ
prvocisla

Registrovaný: 16.02.08
Prihlásený: 08.12.10
Príspevky: 235
Témy: 13
Príspevok NapísalOffline : 02.11.2008 1:12

najjednoduchsie a efektivne je casto rozdiel.

trunc/round pri praci s realnymi cislami. Ak su cisla integer, ta div/mod

preco staci kontrolovat po odmocninu?


Offline

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

Registrovaný: 30.04.08
Prihlásený: 15.05.15
Príspevky: 884
Témy: 3
Príspevok NapísalOffline : 02.11.2008 16:16

No to mas tak, pokial cislo nema aspon jedneho delitela mensieho ako jeho odmocnina, tak nema ziadneho - je prvocislo. :)







_________________
Empty your memory, with a free()… like a pointer!
If you cast a pointer to an integer,
it becomes the integer, if you cast a pointer to a struct, it becomes the struct…
The pointer can crash…, and can overflow…
Be a pointer my friend…
Offline

Užívateľ
Užívateľ
prvocisla

Registrovaný: 16.02.08
Prihlásený: 08.12.10
Príspevky: 235
Témy: 13
Príspevok NapísalOffline : 02.11.2008 16:20

preco to mam tak?







_________________
Učet je neaktívny.
Offline

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

Registrovaný: 04.08.08
Prihlásený: 28.10.11
Príspevky: 152
Témy: 42
Príspevok Napísal autor témyOffline : 02.11.2008 18:02

neutromind:
no hej tvoj skript je lepsi,ak nebudes chciet vediet pocet delitelov. :)


Offline

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

Registrovaný: 30.04.08
Prihlásený: 15.05.15
Príspevky: 884
Témy: 3
Príspevok NapísalOffline : 02.11.2008 22:33

jo jo :)

ado21 - ved si to skus s nejakym cislom - ak nema do svojej odmocniny nejakeho delitela, tak uz potom nema ziadneho. :)







_________________
Empty your memory, with a free()… like a pointer!
If you cast a pointer to an integer,
it becomes the integer, if you cast a pointer to a struct, it becomes the struct…
The pointer can crash…, and can overflow…
Be a pointer my friend…
Offline

Užívateľ
Užívateľ
prvocisla

Registrovaný: 14.05.08
Prihlásený: 16.06.23
Príspevky: 99
Témy: 14
Bydlisko: Prievidzaaa...
Príspevok NapísalOffline : 03.11.2008 15:39

a čo taká 9 ? :D odmocnina je 3 a 9 nemá menšieho deliteľa ako 3..... ;)


Offline

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

Registrovaný: 30.04.08
Prihlásený: 15.05.15
Príspevky: 884
Témy: 3
Príspevok NapísalOffline : 03.11.2008 17:08

...mensieho alebo rovneho odmocnine :rolleyes: To som sa pomylil, ale v tom kode to je spravne ( while ((i <= x ...) :)







_________________
Empty your memory, with a free()… like a pointer!
If you cast a pointer to an integer,
it becomes the integer, if you cast a pointer to a struct, it becomes the struct…
The pointer can crash…, and can overflow…
Be a pointer my friend…
Offline

Užívateľ
Užívateľ
prvocisla

Registrovaný: 02.09.05
Prihlásený: 17.11.10
Príspevky: 154
Témy: 1
Príspevok NapísalOffline : 03.11.2008 21:05

Pouzite Eratostenovo sito, od 2 po odmocninu z N nasledovnym sposobom :
Kód:
#define N 102

int main() {

   int i, j, a[N];
   
   /* vsetky prvky pola oznacim 1 */
   for (i = 2; i < N; i++) a[i] = 1;
   
   /* tie ktore niesu prvocisla oznacim ako 0 */
   for (i = 2; i < (int)sqrt(N); i++)
      for (j = i; i*j < N; j++) a[i*j] = 0;

   /* podmienkou if (a[i]) co je ekvivalent s if (a[i] == true) v pascali
   testujem ci sa dane cislo nachadza medzi prvocislami */     
   for (i = 2; i < N; i++)
      if (a[i]) printf("%4d", i);

   getch();
   return 0;
}







_________________
Múdry nie je ten, čo veľa vie, ale ten, kto vie, čo je treba. (Thomas Alva Edison)
Offline

Užívateľ
Užívateľ
prvocisla

Registrovaný: 05.01.09
Prihlásený: 04.04.16
Príspevky: 13
Témy: 5
Bydlisko: Košice
Príspevok NapísalOffline : 16.01.2011 16:31

metoda v jave:
Kód:
 public static boolean isPrvocislo(int number) {
        int j = 2;
        float a;

        while (!(j >= number)) {
            a = (float) number / j;
            // zistenie ci cislo je cele alebo realne
            if (a > (int) (number / j)) {
                j += 1;
            } else {
                return false;
            }
        }
        return true;
    }







_________________
La morte non viene mai da sola.
"Death never comes alone"
Odpovedať na tému [ Príspevkov: 11 ] 


Podobné témy

 Témy  Odpovede  Zobrazenia  Posledný príspevok 
V tomto fóre nie sú ďalšie neprečítané témy. priklad v C++, delitele, prvocisla :)

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

1

486

28.12.2020 12:29

Jur_3 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