Wątek przeniesiony 2016-05-09 14:55 z C/C++ przez ŁF.

Wypisanie liczb pierwszych

0

Witam, program ma wypisać wszystkie liczby z przedziału <1;100>.
Program się kompiluje ok i według mnie powinien działać poprawnie, ale on wypisuje wsyzstkie wartości tak jakby bool zawsze = true, a przecież tka nie jest. Pomocy

#include<iostream>
#include<cstdio>
#include<cstdlib>

using namespace std;

int main()
{
    int min=1, max=100; int dzielnik;

    for(int i=min; i<=max; i++)
    {
            bool podzielna=true;
        for(dzielnik=2; dzielnik<max; dzielnik++)
        {
            if(i%dzielnik==0)
            {
                podzielna=false;
                break;
            }
                    }
            dzielnik=2;
        if (podzielna=true)
            cout<<i<<" To liczba pierwsza"<<endl;
    }
    system("pause");
    return 0;
} 
3

if (podzielna=true)
Przypisanie zamiast porównania. Powinno być ==

Wszystkie popularne kompilatory ostrzegają o tym, wystarczy tylko włączyć i czytać warningi.

dodatkowo: for(dzielnik=2; dzielnik<max; dzielnik++) dla wszystkich liczb poza max będziesz wykonywał działanie i%i, które naturalnie dzieli się bez reszty, więc oznaczysz sobie wszystkie jako niepierwsze. Ponadto, nie ma sensu próbować aż do i, wystarczy sqrt(i)

PS: popracuj nad formatowaniem

1

Masz jeszcze jeden błąd, przed pętlą powinno być

bool podzielna = false;

a w pętli

podzielna = true;

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