Cách tìm thừa số nguyên tố lớn nhất của một số trong python

Ngôn ngữ lập trình Python là ngôn ngữ lập trình cấp cao và hướng đối tượng. Python là một ngôn ngữ lập trình cấp cao mạnh mẽ, dễ học. Nó có một cách tiếp cận đơn giản nhưng hiệu quả đối với lập trình hướng đối tượng

Thừa số nguyên tố của một số là ước của số đó là số nguyên tố

Tìm thừa số nguyên tố lớn nhất của một số

Chúng tôi sẽ lấy một số nguyên làm đầu vào từ người dùng và sau đó tìm thừa số nguyên tố lớn nhất của số

Ví dụ

Input:
N = 21

Output:
7

Prime factors of 21 = 3, 7. 
Largest of them is 7.

Chúng tôi sẽ tìm tất cả các thừa số nguyên tố của một số và sau đó trả về số lớn nhất trong tất cả

Để tìm thừa số nguyên tố lớn nhất, trước tiên chúng ta sẽ kiểm tra xem số đó có chia hết cho 2 không, i. e. thậm chí. Nếu có, hãy biến nó thành số lẻ và khởi tạo maxPrimeFactor = 2

Sau đó, với mỗi số từ 3, hãy tìm tất cả các ước của số đó (đầu tiên sẽ là số nguyên tố) -> khởi tạo maxPrimeFactor với ước số. Và chia số cho nó cho đến khi nó không còn chia hết cho số. Làm như vậy sẽ đảm bảo mọi bội số của số nguyên tố này sẽ không thể chia hết cho số

Tìm thừa số nguyên tố lớn nhất là một khái niệm rất đơn giản. Giả sử số đó là 1092. Tất cả các thừa số nguyên tố của 1092 là 2, 2, 3, 7, 13. Vậy thừa số nguyên tố lớn nhất là 13. Để tìm thấy điều này, thuật toán sau đây có thể được sử dụng

  number = num

  Step 1: If num is divisible by 2, store
  largest prime factor as 2. keep on dividing
  num until it is not divisible by 2. After
  each division, update num as num/2.

  Step 2: At this point, num must be odd.
  Starting with 3 to square root of num, if
  divisible, divide and update num, and update
  largest prime factor.

  Step 3: if the modified num is greater than
  2, update the largest prime factor with num.


Tìm thừa số nguyên tố lớn nhất của một số

Ví dụ dưới đây minh họa các thuật toán trên

import math

def MaxPrime(num):
  CurrMaxPrime = -1

  #If num is divisible by 2, store CurrMaxPrime
  #as 2. keep on dividing num until it is not 
  #divisible by 2. After each division, update 
  #num as num/2.
  if(num % 2 == 0):
    CurrMaxPrime = 2
    while(num % 2 == 0):
      num = num/2
  
  #At this point, num must be odd. Starting with 
  #3 to square root of num , if divisible, divide 
  #and update num, and update CurrMaxPrime
  for i in range (3, int(math.sqrt(num)) + 1, 2):
    while(num % i == 0):
      CurrMaxPrime = i
      num = num/i

  #if the modified num is greater than 2, 
  #update the CurrMaxPrime with num 
  if (num > 2):
    CurrMaxPrime = num

  return CurrMaxPrime

x = 42
y = 1092
z = 695467363456

print("Largest prime factor of", \
       x, "is:", MaxPrime(x))
print("Largest prime factor of", \
       y, "is:", MaxPrime(y))
print("Largest prime factor of", \
       z, "is:", MaxPrime(z))

Đoạn mã trên sẽ cho đầu ra sau

Largest prime factor of 42 is: 7.0
Largest prime factor of 1092 is: 13
Largest prime factor of 695467363456 is: 5433338777.0




Mỗi vòng lặp của bạn có từ 2 đến n, vì vậy với 2 vòng lặp, vòng lặp của bạn phải được chạy trong bình phương (n) lần trước khi đưa ra câu trả lời cho bạn

Nếu bạn thay đổi vòng lặp của mình một chút, bạn có thể làm cho nó nhanh hơn nhiều. Để tìm các thừa số của một số n, bạn không cần phải kiểm tra tất cả các số nhỏ hơn n. Nó là đủ nếu bạn kiểm tra tối đa int(sqrt(n)). Đối với mỗi thừa số x nằm trong khoảng từ 2 đến int(sqrt(n)), n/x cũng sẽ là một thừa số

Vì vậy, bằng cách thay đổi vòng lặp của bạn để chỉ chạy tối đa int(sqrt(n)), mã của bạn sẽ chạy nhanh hơn nhiều

from math import sqrt 

def is_prime(n): 
    for a in range(2, int(sqrt(n))): 
        if n % a == 0: 
            return False 
    return True 

def prime_factors(x): 
    my_list = [] 
    for no3 in range(2, int(sqrt(x))): 
        if x % no3 == 0: 
            # no3 and x/no3 are factors of x 
            if is_prime(no3): 
                my_list.append(no3) 
            if is_prime(x/no3): 
                my_list.append(no3) 
    print(max(my_list)) 

Bây giờ khi thử điều này, chúng tôi nhận được

>>> prime_factors(600851475143)
6857
>>> 

Trong bài viết này, chúng ta sẽ có trải nghiệm thực tế để tìm thừa số nguyên tố lớn nhất của một số với sự trợ giúp của Lập trình Python bằng hai cách tiếp cận khác nhau

Thừa số nguyên tố - Giới thiệu cơ bản

Thừa số nguyên tố bằng phương pháp cây thừa số và lấy thừa số nguyên tố bằng phương pháp chia

  • Thừa số nguyên tố bằng phương pháp cây thừa số. Phương pháp cây thừa số liên quan đến việc tìm các thừa số của một số và sau đó phân tích các số đó thành thừa số cho đến khi chúng ta đạt được các số nguyên tố. Thực hiện theo các bước dưới đây để xác định thừa số nguyên tố của một số bằng cách sử dụng phương pháp cây thừa số
    1. Coi số là gốc của nhánh trên cùng của cây nhân tố
    2. Sau đó, với tư cách là cành cây, hãy viết ra cặp nhân tố liên quan
    3. Nhân tử hóa các thừa số tổng hợp đã tìm được ở bước 2 và ghi lại cặp thừa số giống như các nhánh tiếp theo của cây
    4. Lặp lại bước thứ 3, trừ khi chúng tôi có được tất cả các yếu tố
  • Phương pháp phân chia. Bằng cách chia một số nguyên lớn cho các số nguyên tố, phương pháp chia có thể được sử dụng để xác định các thừa số nguyên tố. Để tìm các thừa số nguyên tố của một số nguyên bằng phương pháp chia, hãy làm theo các bước dưới đây
    1. Chia một số cho số nguyên tố nhỏ nhất sao cho số nguyên tố nhỏ nhất chia hết số đó
    2. Chia thương của bước 1 cho số nguyên tố nhỏ nhất một lần nữa
    3. Lặp lại trừ khi và cho đến khi kết quả thương là 1
    4. Cuối cùng, nhân tất cả các ước của phép chia với tất cả các thừa số nguyên tố

Thừa số nguyên tố lớn nhất - Khái niệm

Khái niệm về thừa số nguyên tố lớn nhất rất đơn giản. Hãy phá vỡ nó

  • Mỗi con số bị ảnh hưởng bởi nhiều yếu tố
  • Các thừa số là những số chia hết một số đã cho để lại số 0 làm dư
  • Chúng ta hãy xem một ví dụ. Khi nhìn vào số 6, chúng ta có thể thấy rằng nó có 4 yếu tố. 1,2,3,6. Mặt khác, hai và ba là các số nguyên tố. 3 là ước nguyên tố lớn nhất của số 6 vì nó lớn hơn 2

Bây giờ chúng ta đã sẵn sàng đi sâu vào phiên bản lập trình tìm thừa số nguyên tố lớn nhất của một số

Cách tiếp cận Python để tìm thừa số nguyên tố lớn nhất của một số

Để tìm thừa số nguyên tố lớn nhất của một số, chúng ta sẽ thực hiện theo hai cách tiếp cận khác nhau. Cách tiếp cận đầu tiên là lấy đầu vào từ người dùng và cách tiếp cận thứ hai là nhập trước số trong chính mã. Trước tiên chúng ta hãy xem cách tiếp cận thuật toán của chương trình

thuật toán

  1. Ở bước đầu tiên, chúng ta phải phân tích đầu vào số đã cho thành thừa số bằng cách chia nó cho ước của một số
  2. Bây giờ, chúng ta phải kiểm tra số bằng cách so sánh chúng và đưa ra số cao nhất

Đoạn mã

Chương trình Python để tìm thừa số nguyên tố lớn nhất bằng cách lấy đầu vào của người dùng

import math

# input from user 
a = int(input("Enter the number : "))

maxPrime = 0
# converting the number to odd
while a % 2 == 0:
	maxPrime = 2
	a = a/2	

# prime factors and replacing maxPrimeFactor
for i in range(3, int(math.sqrt(a)) + 1, 2):
	while a % i == 0:
		maxPrime = i
		a = a / i
if a > 2:
	maxPrime = a
		
print("The largest prime Factor of number is ",int(maxPrime))
  


Nhập số. 60
Ước nguyên tố lớn nhất của một số là 5

Chương trình Python tìm Thừa số nguyên tố lớn nhất theo số nhập sẵn

def isPrime(a):
    # invalid input
    if a <= 1:
        return False

    #  potential divisors
    for i in range(2,a):
        if a % i == 0:
            return False 
      

    # no divisor found, it's a prime number
    return True
# pre-inputted
number = 60

# a list to store prime factors of a number
Prime_F=[]
Prime_F.append(1)

for i in range(2, number//2 + 1):
    # if number is a factor
    if number % i == 0:
        # if factor is also a prime
        if isPrime(i)==True:
            # add number to the list
           Prime_F.append(i)
# output 
print("The Largest Prime Factor of given number is  =",max(Prime_F))


Thừa số nguyên tố lớn nhất của một số đã cho là = 5

Mô tả mã

Trước khi chúng ta có thể tính toán một số, trước tiên chúng ta phải xác định tất cả các biến ảnh hưởng đến nó. Ví dụ, khi xem xét số 60, chúng ta có thể thấy rằng nó được tạo thành từ ba yếu tố. 2,3,5. Một vòng lặp từ 2 đến một nửa số được chạy trong mã. Vòng lặp sẽ từ 2 đến 7 trong trường hợp này. Bây giờ chúng ta sẽ xem liệu mỗi thừa số có phải là số nguyên tố không. Chúng tôi có một hàm trợ giúp trong mã để kiểm tra xem một số nguyên có phải là số nguyên tố hay không — chúng tôi gọi nó trên mọi thừa số. Chúng tôi thêm số vào danh sách các thừa số được bảo toàn nếu nó vừa là thừa số vừa là số nguyên tố. Cuối cùng, chúng tôi lấy số cao nhất từ ​​​​danh sách để có thừa số nguyên tố lớn nhất

Phần kết luận

Trong phần hướng dẫn này, chúng ta đã biết thế nào là phân tích thừa số nguyên tố, Cách tính thừa số nguyên tố lớn nhất của một số và hai cách tiếp cận khác nhau để tìm ra thừa số nguyên tố lớn nhất của một số. Cách tiếp cận đầu tiên là lấy đầu vào của người dùng và cách tiếp cận thứ hai là bằng các số được nhập trước trong chính mã

Thừa số nguyên tố lớn nhất của số 600851475143 Mã Python là gì?

Câu trả lời là. 6857 . Vì mỗi số nguyên có thể được biểu diễn (phân tích thừa số) bằng cách sử dụng các số nguyên tố như 2^a*3^b*5^c…. Chúng ta có thể bỏ qua phép thử nguyên tố và chỉ cần sử dụng một vòng lặp đơn giản để tìm kiếm thừa số nguyên tố lớn nhất.

thừa số nguyên tố lớn nhất là gì?

Theo quy ước, 1 (trước đây được coi là số nguyên tố, nhưng bây giờ được gọi là đơn vị) đôi khi được coi là số nguyên tố lớn nhất của chính nó . Trên thực tế, 1 là tích rỗng (được định nghĩa là đơn vị nhân, i. e. 1) số nguyên tố.