Python-da SQRT

Python ədədi giriş kimi qəbul edən və həmin ədədin kvadrat kökünü çıxış kimi qaytaran daxili funksiyası sqrt var. Siz idxal etməlisiniz riyaziyyat Bu funksiyaya birbaşa daxil olmaq üçün modulu seçin və riyaziyyatdan istifadə edərək bu funksiyaya zəng etməlisiniz.

Sintaksis:

math.sqrt(n)

Parameters:

İstənilən n ədədi, n>=0

Çıxış:

Çıxış, giriş parametri kimi ötürülən n ədədinin kvadrat köküdür.

Python sqrt istifadə nümunəsi:

import math

#

mükəmməl kvadrat

 number
print(math.sqrt(9))

# Checking for 0 to see if there is an error
print(math.sqrt(0))

# Not a

mükəmməl kvadrat

print(math.sqrt(35))

# Float number
print(math.sqrt(22.5))
3.0
0.0
5.916079783099616
4.743416490252569

Üçün mənfi ədədlər, xəta alacağıq.

>>> math.sqrt(-18)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ValueError: math domain error

Praktik tətbiq:

A əsas sayı yalnız 1-ə və ədədin özünə bölünən ədəddir. Əgər başlanğıcsınızsa, gəlin kod yazın ədədin əsas olub olmadığını yoxlamaq üçün. Hələlik optimallaşdırma ilə bağlı narahat olmayaq.

Əgər kodunuz mənimkindən fərqlidirsə, narahat olmayın. Kodu işə salmaq üçün lazım olan vaxtı çap etmək üçün bu kod parçasını yoxlayın.

import time

start_time = time.time()
print("--- %s seconds ---" % (time.time() - start_time))
import time

def prime_or_not(n):
    count=0
    for i in range(2,n):
        if n%i==0:
            count+=1
    if count==0:
        print('prime')
    else:
        print('non prime')

start_time = time.time()
prime_or_not(12345397)
print("--- %s seconds ---" % (time.time() - start_time))

Yuxarıdakı kodda bizim yoxladığımız şey budur ki, əgər ədəd 2 ilə n-1 arasında hər hansı bir ədədə bölünürsə, o zaman ədəd baş ədəddir. Əks halda bu, sadə rəqəm deyil.

12345397 nömrəsinin sadə olub-olmadığını yoxlamaq üçün yuxarıdakı proqrama sərf olunan vaxt:

prime
--- 8.480168104171753 seconds ---

sqrt istifadə edərək optimallaşdırılmış Python kodu:

Ədədin 2 ilə arasında bölünüb-bölünmədiyini yoxlayaraq yuxarıdakı kodu optimallaşdıra bilərsiniz kvadrat kök sayının. İndi for loop limitlərini dəyişdirin və alınan vaxtı yoxlayın:

import time
import math

def prime_or_not(n):
    count=0
    for i in range(2,int(math.sqrt(n))):
        if n%i==0:
            count+=1
    if count==0:
        print('prime')
    else:
        print('non prime')

start_time = time.time()
prime_or_not(12345397)
print("--- %s seconds ---" % (time.time() - start_time))

İndi çıxış belədir:

prime
--- 0.0020029544830322266 seconds ---

Kodu işlətmək üçün sərf olunan vaxtda böyük fərq olduğunu görə bilərsiniz.

Translate »