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