[C++] Problem z działaniami matematycznymi


(Bmsiak) #1

Witam. Mam problem z działaniami matematycznymi w środowisku Visual Studio 2012. Otóż napisałem prosty program do sprawdzania czy dana liczba jest liczbą pierwszą. Kompilator pokazuje błąd w warunku pętli for mojej funkcji, a dokładniej gdzie mam wyrażenie z pierwiastkiem. Oczywiście dołączyłem wcześniej załącznik . Proszę o pomoc, gdyż zależy mi na tym programie :). Jego kod:

// LiczbaPierwsza


#include 

#include 

#include 


bool LiczbaPierwsza(unsigned uLiczba)

{

	if(uLiczba == 2)

	{

		return true;

	}

	for(int i = 2; i <= sqrt(uLiczba); ++i)

	{

		if(uLiczba % i == 0)

		{

			return false;

		}

	}

	return true;

}

void main()

{

	unsigned uLiczba1;

	std::cout << "Podaj liczbe naturalna" << std::endl;

	std::cin >> uLiczba1;

	if(LiczbaPierwsza(uLiczba1))

	{

		std::cout << "Liczba " << uLiczba1 << " jest liczba pierwsza." << std::endl;

	}

	else

	{

		std::cout << "Liczba " << uLiczba1 << " nie jest liczba pierwsza." << std::endl;

	}

	getch();

}

(Arkadiusz Adamski) #2

u mnie na kompilatorze gcc 4.6.3 kompiluje się i uruchamia bez zarzutów.. podaj treść błędu jaką wywala ci kompilator.


(Drobok) #3

Visual chce float, bądź double jako sqrt :stuck_out_tongue:

zamiast sqrt(uLiczba), daj sqrt((float)uLiczba) i będzie działało

Ponad to, zauważ że lepiej gdzieś te liczby pierwsze zapisać. Po czym robić reszte z dzielenia tylko przez nie :))