Napisz program, który czyta liczbę naturalną N (nie większą od dwóch miliardów) i i sprawdza, czy jej suma cyfr jest liczbą pierwszą. Program powinien wypisać komunikat "TAK" lub "NIE" (dużymi literami, z końcem wiersza). Na przykład dla liczby 25 program powinien wypisać "TAK", natomiast dla liczby 333 program powinien wypisać "NIE".
if (LiczbaPierwsza(uWartosc)) std::cout << "TAK"; else std::cout << "NIE";
getch(); }
Proszę, jeśli kompilator wyrzuca warning'a, który dotyczy "getch()", zastąp to funkcją "getchar()", jesli program nie czeka na kliknięcie entera, napisz: " getchar(); getchar(); "
Rozwiązanie warte ZDECYDOWANIE zbyt mało punktów, chłopie, zastanów się następnym razem... sam sobie się dziwie dlaczego to napisałem!
BTW. Nie napisałeś w jakim języku programowania ma być ten program...
Aha, i nie miałem okazji kompilacji ale działa na 99.9%.
Pzdr.
EDIT// zwyczajny int może przechować wartość nieco ponad 2 miliardową. Unsigned zwiększa tą wartość, ponieważ nie przechowuje liczb ujemnych. Możesz zmienić unsigned, na zwykłego inta, ale jeśli tak bardzo Ci zależy na tej 2-miliardowej wartości, to napisz coś w stylu: if (uWartosc > 2000000000) exit(1);
Albo zamiast exita, wiadomość informującą o zbyt dużej wartości i ewentualną pętle while, która wymusi podanie prawidłowej wartości.
#include <conio.h>
bool LiczbaPierwsza(unsigned uLiczba)
{
if (uLiczba == 2) return true;
for (unsigned i = 2; i <= sqrt(uLiczba); ++i)
{
if (uLiczba % i == 0)
return false;
}
return true;
}
void main()
{
unsigned uWartosc;
std::cout << "Podaj liczbe: ";
std::cin >> uWartosc;
if (LiczbaPierwsza(uWartosc))
std::cout << "TAK";
else
std::cout << "NIE";
getch();
}
Proszę, jeśli kompilator wyrzuca warning'a, który dotyczy "getch()", zastąp to funkcją "getchar()", jesli program nie czeka na kliknięcie entera, napisz:
"
getchar();
getchar();
"
Rozwiązanie warte ZDECYDOWANIE zbyt mało punktów, chłopie, zastanów się następnym razem... sam sobie się dziwie dlaczego to napisałem!
BTW. Nie napisałeś w jakim języku programowania ma być ten program...
Aha, i nie miałem okazji kompilacji ale działa na 99.9%.
Pzdr.
EDIT//
zwyczajny int może przechować wartość nieco ponad 2 miliardową. Unsigned zwiększa tą wartość, ponieważ nie przechowuje liczb ujemnych. Możesz zmienić unsigned, na zwykłego inta, ale jeśli tak bardzo Ci zależy na tej 2-miliardowej wartości, to napisz coś w stylu:
if (uWartosc > 2000000000)
exit(1);
Albo zamiast exita, wiadomość informującą o zbyt dużej wartości i ewentualną pętle while, która wymusi podanie prawidłowej wartości.