Rozwiązywałem szerszy problem. I teraz bardzo by mi się przydało coś co powiedziałoby mi czy pierwiastek z liczby jest liczba całkowitą. Problem w tym że całkiem możliwe że ten warunek będę musiał sprawdzać z 8mln razy ;x może mi ktoś powiedzieć jak to zrobić?
pomnóż pierwiastek przez siebie i sprawdź czy jest równy z oryginałem..
double n;
cin>>n;
if(sqrt(n)*sqrt(n)==n)
cout<<"YES";
else
cout<<"NO";
Carlos Spicy-Weener napisał(a)
pomnóż pierwiastek przez siebie i sprawdź czy jest równy z oryginałem..
double n;
cin>>n;
if(sqrt(n)*sqrt(n)==n)
cout<<"YES";
else
cout<<"NO";
y... ale jak wyciągnie pierwiastek z 0,25 czyli 0,5 i pomnoży go to znowu wyjdzie warunek spełniony, na to co podałeś sam wpadłem i od razu wykluczyłem. Nie sprawdziłoby to się w moim programie, strasznie przekłamany wynik by wyszedł nawet milion x większy niż powinien >.<
TO sie sprawdza, gdy testujesz na liczbach całkowitych.. Niestety nie wiemy do czego jest Ci to dokładnie potrzebne..
a może zapisz to do stringa i zobacz czy jest tam kropka??
Przecież to tak jakbym miał znaleźć kwadraty a obliczał ilość prostokątów. Ogółem jest tak. Mam napisać program który sprawdzi ile dla danej liczby (liczb będzie kilkadziesiąt i większość w okolicach miliarda) ile ma takich a i b że a2+b2=tej liczbie. Jak pewnie zauważyłeś brutalforce by to po prostu zabił. Moja metoda też nie jest szczytem geniuszu. zapuszczam pętle od zera do pierwiastka z liczby i sprawdzam dla każdego czy pierwiastek z liczba - kwadrat pomocniczej pętli jest liczbą całkowitą jeśli tak ilość takich liczb ++.Tylko nie wiem jak sprawdzić. i jeśli będę zbyt rozlegle kombinował to będzie za wolne. brutal forcem nie wyrobiłem się w 6min a tyle mam czasu.
miało być ((a2)+(b2)) te forum zamieniło
double n = sqrt(x);
if (n == (int)n)
cout<<"jest liczbą całkowitą"<<endl;