problem z pierwiastami, język C
-
- Użytkownik
- Posty: 35
- Rejestracja: 2 gru 2007, o 15:21
- Płeć: Kobieta
- Lokalizacja: Kraków
- Podziękował: 11 razy
problem z pierwiastami, język C
Jak sprawdzić w języku C czy pierwiastek kwadratowy z danej liczby jest liczbą całkowitą?
-
- Użytkownik
- Posty: 311
- Rejestracja: 15 mar 2007, o 16:52
- Płeć: Mężczyzna
- Lokalizacja: Lublin
- Podziękował: 28 razy
- Pomógł: 54 razy
problem z pierwiastami, język C
Kod: Zaznacz cały
if(d == (int)d) {
printf("Jest liczba calkowita.
");
}
-
- Użytkownik
- Posty: 13
- Rejestracja: 14 kwie 2008, o 14:27
- Płeć: Mężczyzna
- Lokalizacja: ---
- Pomógł: 2 razy
problem z pierwiastami, język C
Można posłużyć się funkcją floor(double n) z pliku math.h, która zaokrągla liczbę rzeczywistą do dołu. Nie narzucamy wtedy, że zmienna d musi mieścić się w zakresie int.
Kod: Zaznacz cały
if(d == floor(d))
{
//
}
problem z pierwiastami, język C
Kod: Zaznacz cały
unsigned long isqrt(unsigned long x) {
unsigned long op, res, one;
op = x; res = 0;
one = 1 << 30;
while (one > op)
one >>= 2;
while (one != 0) {
if (op >= res + one) {
op = op - (res + one);
res = res + 2 * one;
}
res >>= 1;
one >>= 2;
}
// res == floor(sqr(x))
// op == 0 if res^2 == x
return(op==0);
}