Jak sprawdzić czy pierwiastek ma reszte

0

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ć?

0

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";
0
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 >.<

0

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??

0

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.

0

miało być ((a2)+(b2)) te forum zamieniło

0
double n = sqrt(x);
if (n == (int)n)
  cout<<"jest liczbą całkowitą"<<endl;

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