ďťż
  (gr. VI) liczby pierwsze, zadanie na 23.10.09



Bednarz Przemysław - Sob Paź 17, 2009 9:27 pm
Nie pamiętam dokładnie treści zadania, ale chyba użytkownik miał wprowadzić liczbę "n" i program miał odnaleźć liczby pierwsze z przedziału od 1 do n.
UWAGA: program działa, ale lepiej żeby osoba oceniająca nie widziała kodu, bo jest bardzo wątpliwej jakości xD.

Kod: Zaznacz wszystkoprogram pierwsze;
uses crt;
var n, a, i, x:integer;
      label wroc;

    begin
             clrscr;
              writeln('podaj ilosc liczb');
              readln(n);
              writeln('______________'); {to takie tam moje dla estetyki programu}
              a:=0;
              writeln ('1'); {a to czesc ktorej nie powinien widziec nauczyciel :P}
              writeln('2');    {to tez}

    wroc:
              i:=1;
              x:=0;
              a:=a+1;

    repeat
               i:=i+1;
               if a mod i =0 then x:=x+1;
    Until
              (x=1) or (i=a-1);

    if x=0 then writeln(a);

if a<n then goto wroc;
repeat until keypressed;
end.
Problem programu pojawia się kiedy użytkownik wprowadzi liczbę 1 lub 0 lub jakąkolwiek mniejszą, gdyż program zawsze będzie wypisywał liczby 1 i 2.
Tylko czekać, aż zjawi się ktoś z wersją beta + patch.




mt_Jmal - Sob Paź 17, 2009 9:29 pm
dzięki za program.



Mała Mi - Śro Paź 21, 2009 6:44 pm
Albo taki:
Kod: Zaznacz wszystkoprogram liczby_pierwsze_przedzial;
uses crt;
var
   N : integer;
   i, j : integer;
   licz : integer;
begin
clrscr;
  repeat
    writeln('podaj liczbe naturalna (N>1)');
    readln(n);
  until (N>1);
  write('liczby pierwsze: ',1,' ');
  for i:=1 to N do
      begin
        licz:=0;
        for j:=1 to n do
            if ((i mod j) = 0) then
               licz:=licz+1;
            if licz=2 then
                write(i,' ');
      end;
  readln;
end.



Mariusz_Cebula - Czw Paź 22, 2009 1:08 pm
Wszusytko pieknie ladnie ale przedzial z tego co ja mam zapisane ma byc do owlny czyli np (a,b) co za tym idzie mozna zaczac np 1500 a nie zawsze od 1 czy tam od 3 bo 1 i 2 znamy. Doczytalem tez ze 1 nie jest ani liczba pierwsza ani zlozona wiec nigdy nie naelzy do rozwiazan.




Mała Mi - Czw Paź 22, 2009 2:05 pm
omg, ale nudzisz masz przedział (a,b) i bez 1
Kod: Zaznacz wszystkoprogram liczby_pierwsze_przedzial;
uses crt;
var
   a,b : integer;
   i, j : integer;
   licz : integer;
begin
clrscr;
  repeat
    writeln('podaj początek przedziału ->liczba naturalna (a>1)');
    readln(a);
    writeln('podaj koniec przedziału -> liczba naturalna (b>a)');
    readln(b);
  until (a>1);
  write('liczby pierwsze: ' ');
  for i:=a to b do
      begin
        licz:=0;
        for j:=a to b do
            if ((i mod j) = 0) then
               licz:=licz+1;
            if licz=2 then
                write(i,' ');
      end;
  readln;
end.

od razu mówie że nie sprawdzałm



Bednarz Przemysław - Czw Paź 22, 2009 7:45 pm
Mala Mi, ten drugi program mi nie działa, ale skorelowałem Twój z moim i wyszło coś... w zasadzie działającego:

http://www.send2me.pl/1069_pobierz_download_liczba_pierwsza.rar.htm



Mała Mi - Czw Paź 22, 2009 8:14 pm
Mnie też nie działa
ale obczailam ten twój i zaczelam sie nim bawić i zrobiłam matrixa
zmieniasz przy przedziałach integer na longint, tekst na zielono, kasujesz writel z kropkami i za b dajesz np.999990 i jest matrix



Caps_Lock - Czw Paź 22, 2009 10:13 pm
Ja ma cos takiego i niby działa
oczywiscie sugerowałem sie wcześniejszymi kodami

program liczby_pierwsze_przedzial;
uses crt;
var
a,b : integer;
i, j : integer;
licz : integer;
begin
clrscr;
repeat
writeln('podaj poczĄtek przedziału ->liczba naturalna (a>1)');
readln(a);
writeln('podaj koniec przedziału -> liczba naturalna (b>a)');
readln(b);
until (a>1);
writeln('liczby pierwsze: ','1');
for i:=a to b do
begin
licz:=0;
for j:=1 to b do
if ((i mod j) = 0) then
licz:=licz+1;
if licz=2 then
writeln(i);
end;
readln;
end.



Bednarz Przemysław - Czw Paź 22, 2009 10:30 pm
Pierwszy błąd jaki rzucił mi się w oczy jest taki, że zawsze wypisuje '1', nawet jeśli zakres jest od 10 do 100, w moim programie wypisuje 2 tylko wtedy kiedy użytkownik poda zakres od 2, z kolei jedynki nie wypisuje nigdy bo założyłem, że 1 nie należy do liczb pierwszych...



Mariusz_Cebula - Pią Paź 23, 2009 6:17 am
Wersja ostatnia najlepsza wystarczy wywalic ta 1 ktora jest w writeln i wszystko dziala jak najbardziej poprawnie w 100 %
  • zanotowane.pl
  • doc.pisz.pl
  • pdf.pisz.pl
  • albionteam.htw.pl
  • zanotowane.pl
  • doc.pisz.pl
  • pdf.pisz.pl
  • cichooo.htw.pl