• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Czy liczba jest liczbą pierwszą

0 głosów
141 wizyt
pytanie zadane 6 grudnia 2017 w C i C++ przez impek Użytkownik (570 p.)

Co jest nie tak w tym kodzie, chciałem, żeby było jak najprościej tylko z wykorzystaniem pętli for. 


#include <iostream>

using namespace std;

int i, number;

int main()
{
    cout<<"Podaj liczbe ";
    cin>> number;

    for(i=2; i<number; i++)
    {
        if(number%i==0){
            cout << "Liczba nie jest liczba pierwsza"<<endl;
        }
        else{
            cout<<"Liczba jest liczba pierwsza "<<endl;
        }

    }
    return 0;
}

 

komentarz 6 grudnia 2017 przez Knayder Nałogowiec (32,750 p.)
Poczytaj o "Sito Eratostenesa"

3 odpowiedzi

+1 głos
odpowiedź 6 grudnia 2017 przez Knayder Nałogowiec (32,750 p.)

Co do twojego kodu to:
 

#include <iostream>
 
using namespace std;
 
int i, number;
 
int main()
{
    cout<<"Podaj liczbe ";
    cin>> number;
    bool isFirst = true;
    for(i=2; i<number; i++)
    {
        if(number%i==0){
            isFirst = false;
            break;
        }
 
    }
    if(isFirst)
        cout << "Pierwsza\n";
    else
        cout << "Zlozona\n";
    return 0;
}

 

komentarz 7 grudnia 2017 przez Bondrusiek Nałogowiec (26,850 p.)

Można jeszcze dodać bibliotekę cmath

#include <cmath>

i poprawić warunek

 for(i=2; i< sqrt (number)+0.5 ; i++)
    {
        if(!(number % i)){
            isFirst = false;
            break;
        }

    }

 

komentarz 7 grudnia 2017 przez Knayder Nałogowiec (32,750 p.)
Chcesz za każym razem wywoływać sqrt do sprawdzania? Lepiej już to zapisać do zmiennej.
0 głosów
odpowiedź 6 grudnia 2017 przez seba Dyskutant (8,010 p.)
Musi być zapisane int i=0 w pętli
0 głosów
odpowiedź 6 grudnia 2017 przez Tomek Sochacki Nałogowiec (36,690 p.)
Możesz nieco zmienić założenia:

Jeżeli N < 2 to nie jest l. pierwszą

Jeżeli N === 2 to jest l. pierwszą.

Dla liczb > 2 sprawdzasz iteracyjnie N%i===0 ale nie do "końca", ale wystarczy do pierwiastka z N.

Podobne pytania

0 głosów
1 odpowiedź 91 wizyt
+1 głos
1 odpowiedź 73 wizyt
0 głosów
0 odpowiedzi 97 wizyt
pytanie zadane 10 stycznia w C i C++ przez mn130496 Obywatel (1,910 p.)
Porady nie od parady
Możesz zmodyfikować, zamknąć lub ukryć swoje pytanie, za pomocą przycisków znajdujących się pod nim. Nie krępuj się poprawić pochopnie opublikowanego pytania czy zamknąć go po uzyskaniu satysfakcjonującej odpowiedzi. Umożliwi to zachowanie porządku na forum.
Ciekawy innych porad? Odwiedź tę stronę!

45,699 zapytań

86,090 odpowiedzi

171,933 komentarzy

22,166 pasjonatów

Przeglądających: 181
Pasjonatów: 5 Gości: 176

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto dwie polecane książki warte uwagi. Pełną listę znajdziesz tutaj.

...