Skocz do zawartości

POMOCY! pisze prace kontrolną i jestem zielony!:(


D@N

Rekomendowane odpowiedzi

Witam wszystkoch, na samym poczatku proszę o wyrozumiałośc i zrozumienie gdyż mam do czynienia z PASCALem dopiero od kilku dni

 

proszę abyście mnie nie gnębili i nie zgnoili.

 

dostałem pracę kontrolną a tematem jest:

Licba N jest liczbą doskonałą jeśli suma wszystkich jej dzielników mniejszych od n jest równa N (np6, 28)

 

zadaniem jest napisać schemat blokowy sprawdzający czy liczba naturalna N jest liczą doskonałą.

 

wiem ze to dla was proste. ale dla mnie jest to tak osiagalne jak podróż w kosmos.

jestem na etapie nauki programowania i nie miałem z tym nigdy do czynienia

prosze o pomoc

dziekuję z góry

Odnośnik do komentarza
Udostępnij na innych stronach

proszę abyście mnie nie gnębili i nie zgnoili.

 

Boże jak ja nie nawidze takiego podejścia, to co ty wchodzisz na jakieś trolowisko że cie tu wszyscy mają gnoić? Co my jesteśmy nienormalni? nie rouzmiem...

 

hm... moze for do tylu razy ile wynosi N, i w każdym sprawdza dzielenie przez kolejną liczbe (1,2,3,4... czyli ) jeśli jest dzielenie bez reszy (mod) to zapisuje daną liczbe do tablicy jakiejs i potem gdy wynajdzie wszystkie dzielniki to sumuje i sprawdza czy otrzymana suma jest == do N?

 

EDIT:

Taka zabaweczka w GM robiona z 10 min. http://www.gmclan.org/up199_11_doskonalaN.html moze ci pomoze jesli bawisz się GMLem. Nudziło mi sie xD

Odnośnik do komentarza
Udostępnij na innych stronach

Czy wy widzicie, że jest to dział języków programowania i on nie chce kodu GML geniusze?

A kod Matthew w przełożeniu na Pascal wygląda tak:

program liczby_doskonale;
var n,i,j:real;
begin
j:=1;
for i := 1 to n do
begin
if n mod i = 0 then j:=j+i;
end;
if j = n then writeln('Liczba ',n,' jest doskonała') else writeln('Liczba ',n,' nie jest doskonała');
end.

Odnośnik do komentarza
Udostępnij na innych stronach

@Matthew:

Nie tnij głupa. To był GML przemieszany z Pascalem. Powiem ci czemu twój kod był błędny:

- w pascalu nie ma show_message

- jak wpisujemy stringa, to nie dajemy go w cudzysłowy tylko w apostrofy

- po każdym warunku w if trzeba dać then

- nie dajemy waunków w nawias w Pascalu

- podczas deklaracji zmiennych trzeba podać ich typ

- jak ustawiamy wartość zmiennej, to nie dajemy =, tylko :=

Odnośnik do komentarza
Udostępnij na innych stronach

No tak.

Licba N jest liczbą doskonałą jeśli suma wszystkich jej dzielników mniejszych od n jest równa N (np6, 28)

Ta ? A mnie się wydawało, że liczby doskonałe to takie liczby naturalne a, których suma naturalnych dzielników jest równa a xD Dzielniki naturalne - i nie mogą być większe od a :P No, w sumie mogą, bo liczby dzielą się też przez same siebie... Co przeczy w sumie znaczeniu liczb doskonałych... Bo widzisz: liczby doskonałe to nie są ani liczby pierwsze ani złożone, takie dziwne trochę... :P Bo nie mogą dzielić się przez siebie, ale mogą przez wszystkie inne naturalne mniejsze od siebie. Tutaj więc można już zawiązać pewien sposób na ich obliczenia na podstawie wzoru Euklidesa: dodawanie kolejnych potęg dwójki, póki nie otrzymamy liczby pierwszej. Wtedy należy pomnożyć otrzymaną liczbę przez ostatni składnik dodawania i już mamy liczbę doskonałą. Alternatywny wzór tego sposobu wygląda tak: (2p-1)*2p-1, gdzie 2p-1 jest liczbą pierwszą (p jest potęgą, ale tutaj nie da się wstawaić indeksów więc piszę tak xP). Te dwa sposoby pokazują jednak jedynie sposób na oblicznie liczb doskonałych parzystych. W sumie nie ma innego, bo jak n razie nie odkryto żadnej liczby doskonałej nieparzystej :D Nasz mistrz "Oiler" (Euler ;P) dowiódł, że jeżeli istniałaby taka liczba, musiałaby być postaci p[4k+1]l[2] (te w nawiasach kwadratowych to mają być w indeksie górnym na poziomie potęgi), natomiast w 1990 odkryto, że liczba taka musi być więszka od 10[300]. Na razie największą znaną liczbą doskonałą jest 2[32582656]*(2[32582657-1]), ale wiesz, składa się z 19 616 714 cyfr xDDD... Poza tym, jest prostszy wzór na obliczanie liczb doskonałych: na podstawie liczb pierwszych Mersenne'a. Obliczmay liczbę pierwszą Mersenne'a ze wzoru i mnożymy ją przez dwa. Wzór na oblicznie liczb pierwszych Mersenne'a jest taki: 2[każda liczba pierwsza], oprócz 11.

 

 

 

Tak nawiasem mówiąc, to znane liczby doskonałe to 6, 28, 496, 8128 i 33550336... Dalej zaczynają się liczby astronomiczne, przy których nawet najlepszy procesor przeciętnego użykownika wysiada... Już przy obliczaniu 496 czy 8128, prosesor Core 2 Duo 4Ghz może eksplodować. Prawdą jest, że liczb doskonałych po prostu w ogóle nie opłaca się obliczać zwykłymi programami komputerowymi tak samo jak np. liczby pi. Z tego też wywodu wyłania się moje pytanie do Ciebie: Czego oni się qrde nawalili i nachlali, że zadali Ci tak durne zadanie ?? A może to karna praca ? Bo jasnym jest, że taki zwykły programik jaki ty masz napisać, nie znalazły by nawet czterech pierwszych liczb doskonałych. Bo procesor by wysiadł. Zresztą co, ludzie będą wpisywać parunasto- i parudziesięcio-, ba, parustotysięcznocyfrowe liczby, żeby sprawdzić, czy są one liczbą doskonałą na zwykłym kompie ?! Szczerze i serdecznie wątpię.

Odnośnik do komentarza
Udostępnij na innych stronach

Jeśli chcesz dodać odpowiedź, zaloguj się lub zarejestruj nowe konto

Jedynie zarejestrowani użytkownicy mogą komentować zawartość tej strony.

Zarejestruj nowe konto

Załóż nowe konto. To bardzo proste!

Zarejestruj się

Zaloguj się

Posiadasz już konto? Zaloguj się poniżej.

Zaloguj się
  • Ostatnio przeglądający   0 użytkowników

    • Brak zarejestrowanych użytkowników przeglądających tę stronę.
×
×
  • Dodaj nową pozycję...