Press "Enter" to skip to content

Pomysł na obliczanie pierwiastka z dużej liczby za pomocą pętli

Wychodząc z ciągu 1-4-9-16-25-36-49 tworzonego przez ciąg 1-3-6-10-15-21-28-36, czyli

1

1-1-2

1-2-1-2-3

1-2-3-1-2-3-4

1-2-3-4-1-2-3-4-5

1-2-3-4-5-1-2-3-4-5-6

itd.

otrzymujemy wzór 2*Sn+(n+1)=K, gdzie K to kwadrat liczby (n+1), czyli np.

2*(1+2+3+…+10)+11=121

2*(1+2+3+…1+11)+12=144

2*(1+2+3+…+12)+12=169

Więc jeśli mamy liczbę 169 i nie znamy jej pierwiastka, szukamy „łatwego kwadratu” z końcówką 00.

Liczba cyfr w 169 to 3. „Łatwym kwadratem” będzie 100, gdzie pierwiastek wynosi 10.

100 to 2*(1+2+3+…+9)+10.

Więc następnym kwadratem będzie 2*(1+2+3+…+10)+11=121. Tworzymy go za pomocą pętli i sprawdzamy, czy jest równy 169. (Jeśli będzie większy niż 169, to 169 nie jest kwadratem).

Aby utworzyć „łatwy kwadrat”, obliczamy ilość znaków w danej liczbie. Jeśli jest parzysta, to pierwiastkujemy standardowym algorytmem parzystą liczbę początkowych znaków (ważne, aby otrzymany pierwiastek był dokładny do ostatniej cyfry). Jeśli dana liczba jest nieparzysta, to pierwiastkujemy nieparzystą liczbę. Celem jest „łatwy kwadrat” z końcówką 00, 0000, 000000, 00000000 itp., od którego będziemy liczyć pętlę.


Wstępne wersje:

<?php

$szukana = 169;

echo strlen($szukana);
echo "<br>";

if (fmod(strlen($szukana),2)==0)
{echo "parzysta liczba cyfr";}
else {echo "nieparzysta liczba cyfr";}

echo "<br>";

$i=10;
do {
$zmienna = ((1+$i)*$i)+$i+1;
echo $zmienna;
echo "-";
$i++;
if ($zmienna==$szukana) {break;}
} while ($i<100)

?>
<?php

$szukana = 7744;
// łatwy kwadrat 6400, pierwiastek 80

$i=80;
do {
$zmienna = ((1+$i)*$i)+$i+1;
echo $zmienna;
echo "(";
echo $i+1;
echo ")-";
$i++;
if ($zmienna==$szukana) {break;}
} while ($i<1000)

?>
<?php

$szukana = 152399025;

echo "<br>";

$i=10000;
do {
$zmienna = ((1+$i)*$i)+$i+1;
echo $zmienna;
echo "-";
$i++;
if ($zmienna==$szukana) {break;}
} while ($i<20000)

?>
<?php

$szukana = 152399025;

$i=10000;
do {
$zmienna = ((1+$i)*$i)+$i+1;
//echo $i;
//echo "-";
$i++;
if ($zmienna==$szukana) {echo $i; break;}
} while ($i<20000)

?>
VN:F [1.9.22_1171]
Twoja ocena wpisu:
Rating: 4.9/5 (10 votes cast)
Pomysł na obliczanie pierwiastka z dużej liczby za pomocą pętli, 4.9 / 5 , ocen: 10
WordPress – prędkość ładowania strony

W skrócie: sprites, usunięcie "zmian postów", obciążenie - wtyczki http://www.seowordpress.pl/odchudzamy-wordpressa-zwiekszamy-predkosc-seo/

Warto się uczyć Ruby?

Obecnie jestem Python devem ale zainteresowało mnie Ruby. Warto się go uczyć jeśli znam już język backendowy? Czy raczej możliwości Read more

Usunięta wyszukiwarka

Usunąłem to z index.php   <?php /////// wyszukiwarka google, jesli ktos przyjdzie z google $tekst = $_SERVER['HTTP_REFERER']; $zdanie = substr($tekst, Read more

UK Cookie Consent – Googleoff Googleon
ciasteczkowy-potwor-cookies

Chociaż i tak kod banera wtyczki UK Cookie Consent umieściłem na samym dole strony, postanowiłem skorzystać z możliwości opisanej na Read more

Be First to Comment

    Dodaj komentarz

    Twój adres e-mail nie zostanie opublikowany.




    Wordpress Social Share Plugin powered by Ultimatelysocial