Hàm Tìm Ước Chung Lớn Nhất

     

Trong bài này họ sẽ mày mò thuật toán tìm mong chung lớn nhất trong C++, bằng cách sử dụng vòng lặp, thuật toán Euclid và thuật toán một số loại trừ.

Bạn đang xem: Hàm tìm ước chung lớn nhất

*


*

Có cực kỳ nhiều cách để giải quyết bài toán này, trong nội dung bài viết chúng ta sẽ trải qua 3 cách để triển khai bài xích toán. Từ bỏ đó, lựa lựa chọn ra cách tối ưu nhất.

Bài viết này được đăng trên

1. Search UCLN thực hiện vòng lặp

Đây là cách đơn giản dễ dàng nhất để setup thuật toán tìm kiếm UCLN. Đối với thuật toán này họ sẽ đi lặp lần các giá trị từ min(A, B) về 0 và kiểm tra giá trị một.

Các bước triển khai thuật toán này sẽ như sau: chúng ta sẽ sử sử dụng vòng lặp for đẻ xử lý bài tòán này.

Lặp từ bỏ min(A,B) về 0.Với mỗi vòng lặp soát sổ A và B tất cả chia hết đến i giỏi không? Nếu chia hết trả về i.

Trình bài câu hỏi với ngôn từ C/C++ đã như sau :


#include using namespace std;//Hàm tìm ước chung lớn nhấtint UCLN(int A, int B) for(int i = min(A, B); i > 0; --i) if (A % i == 0 && B % i ==0) return i; //Không chạy tới đây vì A, B luôn luôn chia hết đến 1int main() { int A,B; A = 20; B = 12; cout
Output: 4
Đây là cách đơn giản và dễ dàng nhất để giải quyết bài toán này, nhưng đối với dữ liệu lớn việc xử lý bằng cách này không trọn vẹn tối ưu. Độ phức hợp của thuật toán này là O(min(A, B)).

2. Search UCLN bằng phương thức trừ

Ý tưởng của thuật toán này là trừ nhì số A với B lẫn nhau tới khi hai số này bằng nhau. Bây giờ ta sẽ kiếm được ƯCLN của 2 số. Các bước triển khai thuật toán sẽ như sau:

Kiểm tra liệu rằng A hoặc B có bởi 0 hay không ? Nếu bởi 0 trả về ƯCLN là A+B. Dừng chương trình.Lặp tính đến khi A = B. Với mỗi vòng lặp thì phát triển thành biến max(A, B) = quý giá max(A, B) - quý hiếm min(A, B).

Trình bài việc với ngôn ngữ C/C++ sẽ như sau :


#include using namespace std;//Hàm search UCLNint UCLN(int A, int B) //Nếu A hoặc B = 0 thì UCLN = A+ B if (A == 0 int main() { int A,B; A = 20; B = 12; cout
Output: 4
Thuật toán sẽ tiến hành lần lượt các bước như sau. Giả sử A = 100, B = 30.


100 = 100 - 3070 = 70 - 3040 = 40 - 30//Đến đấy là B
Ngoài tiến hành trừ A cùng B, bạn có thể thay lốt trừ thành chia dư. Tác dụng trả về tương tự.

Xem thêm: Bộ 3 Ngôi Sao Sáng Nhất Gần Mặt Trăng Cuối Tuần Qua Là Gì? 10 Ngôi Sao Sáng Nhất Trên Bầu Trời


int UCLN(int A, int B) while(A * B != 0) if (A > B) A %= B; else B %= A; return A + B;
Đây là thuật toán buổi tối ưu hơn so với thuật toán ban đầu, tuy vậy đây không phải là thuật toán buổi tối ưu nhất.

3. Tra cứu UCLN thực hiện thuật toán Euclid

Giải thuật Euclid, hay Thuật toán Euclid, là một giải thuật góp tính ước số chung lớn nhất (ƯSCLN) của hai số một giải pháp hiệu quả. Trong phần này bọn họ sẽ đề cập giải mã ở 2 kỹ lưỡng cơ phiên bản và mở rộng.

Thuật toán Euclid

<Thuật toán Euclid> là 1 giải thuật giúp chúng ta tìm cầu chung lớn nhất của 2 số. Nó được thực hiện dựa trên đặc điểm của UCLN đó là UCLN(A, B) = UCLN(B, A%B).

Giả sử chúng ta có 2 số A = 20, B = 12. Tiến hành bằng thuật toán Euclid sẽ chuyển động như sau.


UCLN(20, 12) = UCLN(12, 20%12) = UCLN(12, 8)UCLN(12, 8) = UCLN(8, 12%8) = UCLN(8, 4)UCLN(8, 4) = UCLN(4, 8%4) = UCLN(4, 0)Vì B = 0 đề nghị UCLN(4, 0) vẫn là 4
Ý tưởng xúc tiến thuật toán này đang quy nạp cho tới khi A % B = 0. Trình bài bài toán với ngôn từ C/C++ vẫn như sau :


#include using namespace std;int UCLN(int A, int B) if (B == 0) return A; return UCLN(B, A%B);int main() { int A,B; A = 20; B = 12; cout
Output: 4
Đây là giải pháp tối ưu nhất nhằm giải những bài toán với dữ liệu lớn. Độ phực tạp của thuật toán này là O(logmax(A,B)).

Thuật toán Euclid mở rộng (Extended Euclidean algorithm)

UCLN(A, B) có một tính chất khá đặc trưng đó là luôn biểu diễn được nghỉ ngơi dạng Ax + By = UCLN(A, B) trong số đó x, y là nhị số nguyên. Đây là một phần mở rộng lớn của thuật toán Euclid cho phép chúng ta tìm ra nhị số x cùng y vừa lòng tính chất.


#include using namespace std;int d, x, y;void extendedEuclid(int A, int B) if (B == 0) d = A; x = 1; y = 0; else extendedEuclid(B, A%B); int temp = x; x = y; y = temp - (A/B)*y; int main() { extendedEuclid(16, 10); cout
Output: UCLN(20, 12) = 4 x, y: -1, 2
Độ tinh vi của thuật toán này là O(log(max(A,B)).

4. Search UCLN bởi hàm gồm sẵn trong C/C++

Ngoài biện pháp tự viết những hàm search uớc chung to nhất, chúng ta còn hoàn toàn có thể sử dụng hàm __gcd bao gồm sẵn trong thư viện algorithm của C/C++.

Xem thêm: Tính Độ Dài Đoạn Thẳng Qua 2 Điểm, Tính Độ Dài Đoạn Thẳng Khi Biết Tọa Độ 2 Điểm


#include#includeusing namespace std;int main() { int A,B; A = 20; B = 12; cout
Output: 4
Đây là cách nhanh nhất để giải bài toán trong C/C++, quanh đó tìm cầu chung lớn nhất thư viện algorithm còn có không ít hàm cung ứng khác đến giải các bài toán như max, min, sort,...Chúng ta tất cả thể bài viết liên quan về tủ sách algorithm.

Trên đây là phần giới thiệu cũng như triển khai của các thuật toán tìm ước chung lớn nhất. Đây cũng là các thuật toán tốt được sử dụng cũng tương tự rât có lợi trong quá trình giải các bài toán search kiếm. Siêu mong nội dung bài viết sẽ hữu ích cho bạn !


O(log⁡max(A,B))" role="presentation" style="box-sizing: border-box; margin: 0px; padding: 0px; display: inline; line-height: normal; font-size: 15px; overflow-wrap: normal; white-space: nowrap; float: none; direction: ltr; max-width: none; max-height: none; min-width: 0px; min-height: 0px; border: 0px; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Helvetica, Arial, sans-serif, "Apple màu sắc Emoji", "Segoe UI Emoji", "Segoe UI Symbol"; position: relative;" tabindex="0">
bài xích trước bài tiếp


Tìm những số chẵn lẻ bằng Queue cùng Stack

Để có tác dụng được bài xích này các bạn cần có kỹ năng về cấu tạo Queue…



thiết lập hàng hóng Queue bởi mảng một chiều

bọn họ sẽ thuộc nhau khám phá về cách thiết đặt hàng chờ Queue bằng…



thiết đặt hàng chờ Queue bằng danh sách link

chúng ta sẽ cùng nhau mày mò về giải pháp khởi tạo cấu tạo dữ liệu…



Hàng hóng Queue là gì? cấu trúc dữ liệu và các cách thiết đặt Queue

Trong giải đáp này mình đang giới thiệu các bạn một cấu trúc lưu trữ…


bài xích tập kiểm tra số nguyên tố bởi Stack

chúng ta sẽ bên nhau tạo một kết cấu Stack với danh sách liên kết…


bài xích tập thay đổi cơ số bởi Stack

Trong khuyên bảo này bản thân sẽ thực hiện giải một bài toán chuyển đổi cơ…


thiết đặt Stack bởi mảng một chiều

chúng ta sẽ lần lượt tiến hành tạo những hàm cơ bản cho Stack như:…


thiết đặt Stack bằng danh sách link

họ sẽ tiến hành lần lượt các thao tác làm việc trong Stack áp dụng danh…


ngăn xếp Stack là gì? kết cấu và cơ chế chuyển động ra sao?

Trong giải đáp này mình sẽ giới thiệu chúng ta một cấu trúc lưu trữ…


Xóa Node ngoài cây đỏ đen

chúng ta sẽ cùng nhau tò mò về giải pháp xóa một Node ngoài cây đỏ…


Thêm Node mới vào cây đỏ đen


Cây đỏ black là gì? kết cấu của Red-Black Tree

Trong khuyên bảo này mình đang giới thiệu chúng ta một kết cấu dữ liệu…


Xóa Node khỏi cây nhị phân search kiếm

chúng ta sẽ thuộc nhau thực hiện xóa Node có 1 con, Node tất cả 2…


kiếm tìm Node MAX và MIN vào cây nhị phân tìm kiếm kiếm

chúng ta sẽ triển khai một vài phương pháp tìm ra giá trị MAX và MIN…


Xuất Node con và lá trong cây nhị phân kiếm tìm kiếm

Trong chỉ dẫn này mình sẽ giới thiệu chúng ta cách xuất các Node con…


kiếm tìm kiếm Node trên cây nhị phân tìm kiếm kiếm

Trong giải đáp này mình đang giới thiệu các bạn cách tìm kiếm kiếm một Node…


coi xét cây nhị phân tìm kiếm

họ sẽ tìm hiểu lần lượt 6 giải pháp duyệt cây nhị phân tra cứu kiếm:


Thêm Node vào cây nhị phân kiếm tìm kiếm

Trong lý giải này mình đã giới thiệu các bạn về cấu tạo dữ liệu…


kết cấu cây nhị phân là gì? chuyển động ra sao?

Trong bài này mình vẫn giới thiệu chúng ta một trong các cấu trúc dữ…


Gộp hai danh sách liên kết đôi

chúng ta sẽ thuộc nhau tìm hiểu về cách nối hai danh sách liên kết…


WORDPRESS
HTML Templates
Theme WordPress
Plugin WordPress
thiết kế WordPress
mẹo nhỏ WordPress
WEB HOSTING
quản trị Linux
thủ thuật Hosting
kiến thức Domain
WEB FRONTEND
Javascript
AngularJS
jQuery
jQuery mobile
HTML & CSS
Bootstrap
TypeScript
SASS CSS
VueJS
NestJS
học tập ReactJS
WEB BACKEND
PHP
Codeigniter
Laravel
Phalcon
OpenCart
NodeJS
Blogspot
DATABASE
học MySQL
học tập MongoDB
database căn bạn dạng
học Oracle
học SQL server
học SQLite
PROGRAMMING
Python
Java
Pascal
học C#
học tập Ruby
học tập Swift
C / C++
Kotlin
Golang
giải thuật
Visual Basic
MOBILE DEV
React Native
Học quả táo
app android
CÔNG CỤ
học Git
Testing
Control Panel
Dev Tool
FFmpeg
TIN HỌC
Excel
Word
PowerPoint
Access
Photoshop
MÔN HỌC
giờ đồng hồ Anh
Toán
giờ Nhật
Văn học tập
VIDEO
CSS Lab
PHP Lab
ra mắt
giới thiệu Liên hệ chế độ Điều khoản
liên kết
Thủ thuật tải về Game Ứng dụng Tin học Môn học
links hay

tải ứng dụng 567 live show

Trang chủ bao gồm thứcThabet

Nhà cái https://kubet8.us/

ĐK THABET dìm ngay 628k

kubet W88
link
kèo nhà dòng KUBET88 f8bet Kubet88fun Ku casino KUBET Casino ae888 Ku casino cfun68

*