Các thuật toán về số học sẽ giúp bạn làm quen với thuật toán đơn giản, thường gặp để bạn dể dàng tiếp cận, làm quen với cách trình bày thuật toán.
Một số bài toán số học cơ bản gồm:
- Giải phương trình bậc 2
- Tính tổng n số nguyên đầu tiên
- Tính và in ra n số trong dãy Fibonacci
- In tam giác ngược
Phần này sẽ giúp bạn rèn luyện câu lệnh điều kiện và câu lệnh lặp trong lập trình.
Bài 1: Viết chương trình nhập vào 3 số a,b,c và tìm nghiệm của phương trình bậc 2: ax2 + bx + c = 0
.
Về lý thuyết
Về mặt lý thuyết chúng ta đều biết cách giả phương trình bậc 2 như sau:
- Nếu a = 0 thì phương trình sẽ trở thành bx+c=0, chúng ta đã giải ở phần trước.
- Nếu a<>0, tính
delta = b2 – 4*a*c
- Nếu delta<0, phương trình vô nghiệm
- Nếu delta =0 thì phương trình sẽ có một nghiệm kép
x=-b/2a
- Nếu delta>0 thì phương trình có 02 nghiệm
x1 = (-b + sqrt(delta))/2a, x2 = (-b - sqrt(delta) )/2a
Phân tích các bước
- Đầu vào: nhập các giá trị a, b và c
- Đầu ra: Tính ra nghiệm x
Các bước thực hiện:
Nhập vào các giá trị a, b và c
Kiểm tra a
Nếu a =0
Kiểm tra b
Nếu b=0
Kiểm tra c
Nếu c=0
Thông báo phương trình có vô số nghiệm
Nếu c<>0 thông báo phương trình vô nghiệm
Nếu b<>0
Thông báo phương trình có 1 nghiệm x=-c/b
Nếu a<>0, tính delta
Kiểm tra delta
Nếu delta <0
Thông báo phương trình vô nghiệm
Nếu delta =0
Thông báo phương trình có một nghiệm kép x=-b/2a
Nếu delta >0
Thông báo phương trình có 02 nghiệm phương trình có 02 nghiệm x1 = (-b + sqrt(delta))/2a, x2 = (-b -sqrt(delta))/2a
Cách biểu diễn thuật toán
Trong trường hợp này, tôi sử dụng ngôn ngữ giả.
Declare int a,b,c
Double delta
Input a,b,c
If a=0 then
If b =0 then
If c=0 then
Print ‘Phương trình có vô số nghiệm’
Else
Print ‘Phương trình vô nghiệm’
Else
Print ‘Phương trình có nghiệm x=%f’,-c/b
Else
delta = b*b – 4*a*c
If delta <0
Print ‘Phương trình vô nghiệm’
Else If delta = 0
Print ‘Phương trình có một nghiệm kép x=%f’,-b/2a
Else
Print ‘Phương trình có 02 nghiệm x1= %f, x2=%f”, -b + sqrt(delta)/2*a, -b - sqrt(delta)/2*a
Biểu diễn thuật toán bằng chương trình Java
import static java.lang.Math.sqrt;
public class QuadraticEquation {
public static void main(String[] args) {
int a=1, b=2, c=1;
quardraticEquationFunction(a, b, c);
}
// Ham giai phuong trinh bac 2
static void quardraticEquationFunction(int a, int b, int c){
double delta;
if(a==0)
if(b==0)
if(c==0)
System.out.println("Phuong trinh co vo so nghiem");
else
System.out.println("Phuong trinh vo nghiem");
else
System.out.println("Phuong trinh co mot nghiem x=" + -c/b);
else{
delta=b*b-4*a*c;
if(delta<0)
System.out.println("Phuong trinh vo nghiem");
else if(delta==0)
System.out.println("Phuong trinh co mot nghiep ke x= " + -b/(2*a));
else
System.out.format("Phuong trinh co 02 nghiem x1= %.2f%n va x2 = %.2f%n ",
(-b + sqrt(delta))/2*a, (-b - sqrt(delta))/2*a);
}
}
}