|
|
|
|
(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.pldoc.pisz.plpdf.pisz.plalbionteam.htw.pl
zanotowane.pldoc.pisz.plpdf.pisz.plcichooo.htw.pl
|
|
|
|