Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

Liczby pierwsze

Ostatnio zmodyfikowano 2016-11-17 21:10
Autor Wiadomość
Robercik123
Temat założony przez niniejszego użytkownika
Liczby pierwsze
» 2016-11-17 19:09:09
Cześć, mam taki problem.. Nie moge zrozumieć poniższego kodu, który sprawdza czy podana liczba jest liczbą pierwszą czy nie

C/C++
#include <stdio.h>

#include <stdlib.h>

int main()

{
   
    int p, i;
   
    printf( "Podaj liczbe: " );
   
    scanf( "%d", & p );
   
    for( i = 2; i < p; i++ )
   
    {
       
        if( p % i == 0 )
       
        {
           
            printf( "%d  nie jest liczba pierwsza.\n", p );
           
            system( "PAUSE" );
           
            return 1;
           
        }
       
    }
   
   
   
    printf( "%d jest liczba pierwsza.\n", p );
   
    system( "PAUSE" );
   
    return 0;
   
}
Dodam, że program działa prawidłowo, tylko po prostu nie moge go zrozumieć.

Załóżmy, że podam 9. Czyli 9 % 2 = 1 a w programie wyświetla, że liczba nie jest pierwsza wtedy gdy ten wynik to 0. Czyli jak działa program skoro wynik jego działania jest prawidłowy, bo wyświetla że 9 nie jest pierwsza. Zagmatwałem troche, ale kompletnie sie pogubiłem.



P-153849
Robercik123
Temat założony przez niniejszego użytkownika
» 2016-11-17 19:43:33
Nikt nic :/ ?
P-153852
marcolo2307
» 2016-11-17 20:29:51
Masz tam pętlę.
9%2=1
9%3=0 // tu się przerywa
P-153855
mateczek
» 2016-11-17 20:51:54
A coś ty taki napalony !!! w 15 minut oczekujesz odpowiedzi??
masz komentarze do twojego programu
C/C++
#include <stdio.h>
#include <stdlib.h>
#include<math.h>
int main() {
    int p, i;
    printf( "Podaj liczbe: " );
    scanf( "%d", & p );
    int max = sqrt( p ); //optymalizacja.
    for( i = 2; i < max; i++ ) {
        if( p % i == 0 )
        {
            //jeśli reszta z dzielenia równa się zero(da się podzielić bez reszty)
            //to liczba nie jest liczbą pierwszą(jest złożona)
            //np reszta z dzielena 10%2=0; liczba złożona
            printf( "%d  nie jest liczba pierwsza.\n", p );
            return 1; //koniec progamu
        }
       
    }
    //skoro nie udało się podzielić bez reszty przez żadną z liczb
    //liczba musi być pierwsza
    printf( "%d jest liczba pierwsza.\n", p );
    return 0; //koniec progaramu
}
P-153859
Robercik123
Temat założony przez niniejszego użytkownika
» 2016-11-17 21:10:31
Dzięki za pomoc :), jeszcze raz do tego przysiąde.
P-153862
« 1 »
  Strona 1 z 1