zwracnie wartości w funkci [C]

Odpowiedz Nowy wątek
Rafal612
2012-12-02 18:00
Rafal612
0

Witam,
Mam takie o to zadanie:
Napisz funkcję która przyjmuje jako argument liczbę naturalną n i zwraca jako wartość najmniejszy dzielnik n większy od .
Jak wy byście to zrobili, poprosiłbym o gotowy kod jeśli to możliwe.
Pozdrawiam

Pozostało 580 znaków

sig
2012-12-02 18:13
sig

Rejestracja: 8 lat temu

Ostatnio: 9 godzin temu

0

Najłatwiej będzie chyba sprawdzać resztę z dzielenie liczb od tej podanej minimalnej do n (n też na wypadek jak by żadna nie była) , jak wyjdzie ci zero to znaczy że dzielnik czyli return sprawdzana liczba.

edit: proponuję poprawić nazwę tematu, obecna nijak ma się do problemu.

edytowany 1x, ostatnio: sig, 2012-12-02 18:13

Pozostało 580 znaków

Rafal612
2012-12-02 18:19
Rafal612
0

tam powinno być większa od 1.

Dla niezbyt rozgarniętych tłumacze: w takim razie "podana minimalna" o której wspomniał @sig będzie kolejna liczba po 1. Mam nadzieje że nie zapytasz: - która to. - _13th_Dragon 2012-12-02 18:30

Pozostało 580 znaków

sig
2012-12-02 20:28
sig

Rejestracja: 8 lat temu

Ostatnio: 9 godzin temu

0

W takim razie sprawdzić czy jest podzielna przez 2 i potem od 3 nieparzyste (3, 5, 7 itd). podzielna przez parzystą będzie też podzielna przez 2, a co za tym idzie nie ma sensu ich sprawdzać. Jak wiesz że liczba do sprawdzenia nie przekroczy określonej wartości, możesz sobie zrobić tablicę z liczbami pierwszymi do tej wartości i sprawdzać tylko je. To na pewno będzie liczba pierwsza, tyle że generowanie takowej już podczas sprawdzania spowolni proces zamiast go przyśpieszyć.

ps sprawdzanie możesz zatrzymać przy pierwiastku z szukanej liczby. Jak do niego nie znajdziesz dzielnika to znaczy że to liczba pierwsza, więc wynikiem będzie ona sama.

edit: jest jeszcze Sito Eratostenesa, ale nie wiem czy będziesz w stanie wytłumaczyć się z jego działania (zadanie jak podejrzewam do szkoły na początki programowania). Generalnie szukaj metod na wyznaczanie liczb pierwszych, tyle że tutaj szukasz dowodu że ta liczba nie jest pierwszą (najmniejszego dzielnika większego niż 1). Tak więc algorytmy trzeba będzie zmodyfikować albo inaczej interpretować wyniki

edytowany 1x, ostatnio: sig, 2012-12-02 20:51

Pozostało 580 znaków

Odpowiedz

1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0