CĂN BẢN
CHUỖI
VÒNG LẶP
NUMBER
INPUT / OUTPUT
COLLECTIONS
Ví dụ danh sách liên kết đơn Java Đếm số node trong Singly Linked List trong Java Đảo ngược thứ tự của Singly Linked List trong Java Xóa node đầu tiên của Singly Linked List trong Java Xóa node ở giữa của Singly Linked List trong Java Xóa node cuối cùng của Singly Linked List trong Java Thêm node vào vị trí đầu tiên của Singly Linked List trong Java Thêm node vào vị trí cuối cùng của Singly Linked List trong Java Thêm node vào vị trí giữa của Singly Linked List trong Java Kiểm tra danh sách liên kết đơn palindrome trong Java Tìm giá trị lớn nhất của Singly Linked List trong Java Tìm giá trị nhỏ nhất của Singly Linked List trong Java Xóa phần tử trùng lặp khỏi Singly Linked List trong Java Tìm kiếm phần tử của Singly Linked List trong Java Tạo một Circular Linked List trong Java Tạo một Circular Linked List Java và đảo ngược nó Xóa node đầu tiên của Circular Linked List trong Java Xóa node cuối cùng của Circular Linked List trong Java Xóa node ở giữa của Circular Linked List trong Java Thêm node vào vị trí đầu tiên của Circular Linked List trong Java Thêm node vào vị trí cuối cùng của Circular Linked List trong Java Thêm node vào vị trí giữa của Circular Linked List trong Java Tìm giá trị lớn nhất trong Circular Linked List Java Tìm giá trị nhỏ nhất trong Circular Linked List Tìm kiếm phần tử của Circular Linked List trong Java Xóa phần tử trùng lặp khỏi Circular Linked List trong Java Sắp xếp các phần tử của Circular Linked List trong Java Chuyển đổi Binary Tree thành Double Linked List trong Java Tạo double linked list từ cây bậc ba (ternary tree) trong Java Cách chuyển đổi từ cây nhị phân thành cây nhị phân tìm kiếm trong Java Xác định các lá có cùng cấp trong Tree của Java Kiểm tra hai cây giống nhau trong Java Tìm chiều rộng tối đa của cây nhị phân trong Java Tìm phần tử lớn nhất của cây nhị phân trong Java Tìm khoảng cách lớn nhất giữa các node của cây nhị phân trong Java Tìm phần tử nhỏ nhất của cây nhị phân trong Java Tính tổng giá trị của các node của cây nhị phân trong Java Tính tổng số cây nhị phân tìm kiếm có thể được tạo ra bởi N nodes trong Java Triển khai cây nhị phân từ danh sách liên kết trong Java Tìm kiếm node của cây nhị phân tìm kiếm trong Java Cách tạo ra Mirror Tree từ Binary Tree bằng ngôn ngữ Java Xác định các lá của binary tree sử dụng preoder trong Java Xác định đường biên(boundary traversal) của cây nhị phân trong Java Xóa node của cây nhị phân tìm kiếm trong Java Duyệt cây nhị phân bằng phương pháp inOder trong Java
CALCULATE
SẮP XẾP - TÌM KIẾM
KHÁC
NÂNG CAO
CÁC CHỦ ĐỀ
BÀI MỚI NHẤT
MỚI CẬP NHẬT

Cách kiểm tra số hoàn hảo trong Java

Trong bài viết này chúng ta sẽ tìm hiểu cách kiểm tra số hoàn hảo trong Java. Số hoàn hảo được hiểu đơn giản là số có tổng các ước số của nó bằng chính nó (ví dụ: 6, 28, ..).

test php

banquyen png
Bài viết này được đăng tại freetuts.net, không được copy dưới mọi hình thức.

Mình sẽ thực hiện kiểm tra số hoàn hảo ở hai bài toán khác nhau. Bài toán thứ nhất sẽ kiểm tra một số được nhập từ người dùng, bài toán thứ hai thực hiện xuất các giá trị là số hoàn hảo trong mảng.

1. Thuật toán kiểm tra số hoàn hảo trong Java

Trong phần này mình sẽ kiểm tra một số a được nhập từ bàn phím có phải là số hoàn hảo hay không, sau đó hiển thị ra màn hình.

Đầu tiên ta sử dụng class Scanner để nhận dữ liệu từ bàn phím, nhớ khai báo thư viện nhé.

Bài viết này được đăng tại [free tuts .net]

import java.util.Scanner;

Tiếp theo ta sử dụng vòng lặp for để tìm tổng (sum) các ước số của a. Thực hiện lặp từ 1 đến a/2, sở dĩ chỉ lặp đến a/2 là vì các ước số của a luôn luôn nhỏ hơn hoặc bằng a/2.

for(int i=1;i<=a/2;i++){
      if(a%i==0) 
        //tổng các ước số của a
        sum+=i;
    }

Lúc này ta chỉ cần so sánh sum với số a, nếu sum == a thì a là số hoàn hảo, ngược lại nếu sum != a thì a không phải là số hoàn hảo.

if(sum==a){
  System.out.println(a + " là số hoàn hảo");
}
else {
  System.out.println(a + " không phải là số hoàn hảo");
}

Ví dụ: Mình sẽ thực hiện một chương trình hoàn chỉnh để kiểm tra số chính phương trong Java.

import java.util.Scanner;
public class Main {
  public static void main(String[] args) {
    //sử dụng class Scanner để lấy dữ liệu từ bàn phím
    Scanner sc = new Scanner(System.in);
    //khai báo biến a là số cần kiểm tra, sum là tổng các ước số của a
    int sum = 0, a;
    System.out.println("\n\nNhập vào số cần kiểm tra: ");
    a = sc.nextInt();
    //sử dụng vòng lặp for từ 1 đến a/2 (vì ước số của a luôn luôn nhỏ hơn a/2)
    for(int i=1;i<=a/2;i++){
      if(a%i==0) 
        //tổng các ước số của a
        sum+=i;
    }
    //nếu tổng ước số sum = a thì a là số hoàn hảo
    if(sum==a){
      System.out.println(a + " là số hoàn hảo");
    }
    //ngược lại không phải là số hoàn hảo
    else {
      System.out.println(a + " không phải là số hoàn hảo");
    }

    System.out.println("\n------------------------------------");
    System.out.println("Chương trình này được đăng tại Freetuts.net");
  }
}

Kết quả:

bai5 01 PNG

2. Xuất các số hoàn hảo trong mảng Java

Trong phần này mình sẽ thực hiện kiểm tra số hoàn hảo Java và in ra các số là số hoàn hảo trong một mảng được nhập từ bàn phím.

Đầu tiên ta sẽ khai báo mảng và yêu cầu người dùng nhập vào số lượng phần tử cũng như giá trị cho các phần tử trong mảng.

int n;
System.out.println("\n\nNhập các phần tử cho mảng: ");
n = scanner.nextInt();
int array[] = new int[n];
for (int i = 0; i < n; i++) {
    System.out.println("Nhập phần tử thứ " + i + ": ");
    array[i] = scanner.nextInt();
}

Tiếp theo ta sẽ viết hàm kiểm tra số hoản hảo ktraSoHH(), với tham số truyền vào là một số nguyên a.

public static boolean ktraSoHH(int a){
    int sum = 0;
    for(int i=1;i<=a/2;i++){
      if(a%i==0) 
        //tổng các ước số của a
        sum+=i;
    }
    if(sum==a)return true;
    return false;
  }

Cuối cùng ta sử dụng một vòng lặp for để duyệt các phần tử trong mảng, nếu nó thỏa mãn hàm ktraSoHH() thì in ra màn hình.

for (int i = 1; i < n;i++) {
  if(ktraSoHH(array[i])){
    System.out.print(array[i] + "\t");
  }
}

Ví dụ: Mình sẽ hoàn chỉnh chương trình in số hoàn hảo trong mảng.

import java.util.Scanner;
public class Main {
  //hàm kiểm tra số hoàn hảo với tham số a
  public static boolean ktraSoHH(int a){
    int sum = 0;
    for(int i=1;i<=a/2;i++){
      if(a%i==0) 
        //tổng các ước số của a
        sum+=i;
    }
    if(sum==a)return true;
    return false;
  }
  public static void main(String[] args) {
    // sử dụng class Scanner để nhận dữ liệu từ bàn phím
    Scanner scanner = new Scanner(System.in);
    int n;
    // nhập số lượng phần tử cho mảng
    System.out.println("\n\nNhập các phần tử cho mảng: ");
    n = scanner.nextInt();
    // khai báo mảng với size n
    int array[] = new int[n];
    //sử dụng vòng lặp for để nhập từng phần tử cho mảng
    for (int i = 0; i < n; i++) {
        System.out.println("Nhập phần tử thứ " + i + ": ");
        array[i] = scanner.nextInt();
    }
    System.out.print("Các số hoàn hảo trong các số vừa nhập là: ");
    // sử dụng vòng lặp for để duyệt từng phần tử và kiểm tra, nếu thỏa mãn thì in ra màn hình
    for (int i = 1; i < n;i++) {
      if(ktraSoHH(array[i])){
        System.out.print(array[i] + "\t");
      }
    }
    System.out.println("\n------------------------------------");
    System.out.println("Chương trình này được đăng tại Freetuts.net");
  }
}

Kết quả:

bai5 02 PNG

Như vậy là chúng ta đã tìm hiểu xong cách kiểm tra một số có phải là số hoàn hảo trong ngôn ngữ Java và in các số hoàn hảo trong mảng. Các bạn có thể tham khảo các bài tập Java khác tại Bài tập Java, Chúc các bạn thành công !!!

Cùng chuyên mục:

Hướng dẫn Upload file với Spring Boot và jQuery Ajax trong Java

Hướng dẫn Upload file với Spring Boot và jQuery Ajax trong Java

Hướng dẫn download file với Spring Boot trong Java

Hướng dẫn download file với Spring Boot trong Java

Hướng dẫn Upload file với Spring Boot trong Java

Hướng dẫn Upload file với Spring Boot trong Java

Hướng dẫn CRUD với Spring Boot, REST và AngularJS trong Java

Hướng dẫn CRUD với Spring Boot, REST và AngularJS trong Java

Cách sử dụng Spring  Scheduled trong Spring Boot

Cách sử dụng Spring Scheduled trong Spring Boot

Cách dùng Groovy trong Spring Boot Java

Cách dùng Groovy trong Spring Boot Java

Cách dùng Spring Boot và Mustache trong Java

Cách dùng Spring Boot và Mustache trong Java

Cách dùng Spring Boot và MongoDB trong Java

Cách dùng Spring Boot và MongoDB trong Java

Cách tạo Restful Client bằng RestTemplate trong Spring Boot

Cách tạo Restful Client bằng RestTemplate trong Spring Boot

Hướng dẫn sử dụng Interceptor trong Spring Boot

Hướng dẫn sử dụng Interceptor trong Spring Boot

Sử dụng Twitter Bootstrap trong Spring Boot

Sử dụng Twitter Bootstrap trong Spring Boot

Tạo trang web đa ngôn ngữ với Spring Boot trong Java

Tạo trang web đa ngôn ngữ với Spring Boot trong Java

Tạo ứng dụng Chat với Spring Boot và Websocket

Tạo ứng dụng Chat với Spring Boot và Websocket

Sử dụng JUnit để tạo unit test trong Spring Boot

Sử dụng JUnit để tạo unit test trong Spring Boot

Cách triển khai Spring Boot trên Tomcat Server

Cách triển khai Spring Boot trên Tomcat Server

Cách test RESTful API trong Spring Boot

Cách test RESTful API trong Spring Boot

Cách dùng Spring Security trong Spring Boot để xác thực và phân quyền

Cách dùng Spring Security trong Spring Boot để xác thực và phân quyền

Duyệt cây nhị phân bằng phương pháp inOder trong Java

Duyệt cây nhị phân bằng phương pháp inOder trong Java

Xóa node của cây nhị phân tìm kiếm trong Java

Xóa node của cây nhị phân tìm kiếm trong Java

Bảo mật Spring Boot RESTful Service sử dụng Basic Authentication trong Java

Bảo mật Spring Boot RESTful Service sử dụng Basic Authentication trong Java

Top