[Thuật toán nhỏ] Tìm bội chung nhỏ nhất của 3 số bất kỳ
Yêu cầu
- Input: nhập 3 số nguyên: a, b, c
- Output: BCNN(a, b, c)
Khái niệm
Bội chung nhỏ nhất của các số nhất kỳ là số nhỏ nhất có thể chia hết cho tất cả các số đó
Ý tưởng, hướng giải
Ta sẽ tìm số lớn nhất nhất từ các số vừa nhập và cho nó chạy từ số đó đến khi nào số đang chạy có thê chia hết cho 3 số đã nhập thì dừng báo kết quả.
Giải quyết bài toán
- Bước 1: nhập 3 số a, b, c
- Bước 2: Tìm số lớn nhất từ 3 số a, b, c vừa nhập, gán vào i
- Bước 3: cho biến cho biến greater chạy -> vô cưc, đồng thời ra điều kiện nếu 3 số i đều chia hết cho 3 số a, b, c thì gán bcnn <- greater
- Bước 4: dừng vòng lập và in ra biến bcnn.
Chương trình mẫu (Python, PHP, C++)
Python
# Tìm BCNN của 3 số
# đinh nghĩa hàm
def bcnn(a, b, c):
# tìm số lớn nhất trong 3 số
if a > b and a > c:
greater = a
elif b > c:
greater = b
else:
greater = c
# chạy và tìm BCNN
while(True):
if((greater % x == 0) and (greater % y == 0) and (greater % z == 0)):
bcnn = greater
break
greater += 1
return bcnn
# Người dùng nhập vào 3 số a, b, c
a = int(input("Nhập vào a: "))
b = int(input("Nhập vào b: "))
c = int(input("Nhập vào c: "))
print "Vậy BCNN(a, b, c) = ", bcnn(a, b, c)
PHP
<?php
# Tìm BCNN của 3 số
# Kiem tra nguoi dung gui du lieu
if (isset($_POST['send']){
# đinh nghĩa hàm
function bcnn($a, $b, $c){
# tìm số lớn nhất trong 3 số
if ($a > $b && $a > $c)
$greater = $a;
elseif (b > c)
$greater = $b;
else
$greater = $c;
# chạy và tìm BCNN
while(true){
if(($greater % $x == 0) && ($greater % $y == 0) && ($greater % $z == 0)){
$bcnn = $greater;
$break;
}
$greater++;
}
return $bcnn;
}
# Người dùng nhập vào 3 số a, b, c
$a = $_POST['a'];
$b = $_POST['c'];
$c = $_POST['b'];
echo "Vậy BCNN(a, b, c) = ", bcnn($a, $b, $c);
}
## nguoi dung nhap du lieu
?>
<form method="POST">
Nhap a: <input type="number" name="a" /><br />
Nhap b: <input type="number" name="b" /><br>
Nhap c: <input type="number" name="c" /><br />
<input type="submit" name="send" value="OK" />
</form>
C++
#include <iostream>
using namespace std;
int bcnn( int a, int b, int c);
int main() {
int a, b, c;
cout << "Nhap 3 so a, b, c: ";
cin >> a >> b >> c;
cout << "BCNN(a, b, c) = : " << bcnn(a, b,c);
return 0;
}
// Tìm BCNN của 3 số
int bcnn( int a, int b, int c) {
// tìm số lớn nhất trong 3 số
int greater, bcnn;
greater = (a > b && a > c ) ? a : ((b > c) ? b : c);
// chạy và tìm BCNN
while (true) {
if (greater%a == 0 && greater%b == 0 && greater%c == 0){
bcnn = greater;
break;
}
++greater;
}
}
Có gì góp ý cho mình nha