Số Hoàn Hảo – Tổng Hợp Bài Tập Và Lời Giải | Lập Trình Java

Số hoàn hảo-lập trình java

“Số hoàn thiện (hay còn gọi là số hoàn chỉnh, số hoàn hảo hoặc số hoàn thành) là một số nguyên dương mà tổng các ước nguyên dương chính thức của nó (số nguyên dương bị nó chia hết ngoại trừ nó) bằng chính nó. “

Bài 1: Nhập vào một số nguyên dương n kiểm tra n có phải là số hoàn hảo không.

Code mẫu:

import java.util.Scanner;
import java.lang.Math;
public class MathSubjects{
    public boolean soHoanHao(int n)
    {
        int s=1;
        for(int i=2;i<Math.sqrt(n);i++)
        {
            if(n%i==0) s+=i+(n/i);
        }
        if(n==s) return true;
        else return false;
    }
     
    public static void main(String[] args) {
        MathSubjects A = new MathSubjects();
        Scanner input = new Scanner(System.in);
        System.out.print("Enter a number : ");
        int n = input.nextInt();
        if(A.soHoanHao(n))
        {
            System.out.print(n+" là số hoàn hảo");
        }else {
            System.out.print(n+" không phải là số hoàn hảo");
        }
    }
}

Bài 2: Nhập vào một số nguyên dương n in ra các số hoàn hảo nhỏ hơn hoặc bằng n

Code mẫu:

import java.util.Scanner;
import java.lang.Math;
public class MathSubjects{
    public boolean soHoanHao(int n)
    {
        int s=1;
        for(int i=2;i<Math.sqrt(n);i++)
        {
            if(n%i==0) s+=i+(n/i);
        }
        if(n==s) return true;
        else return false;
    }
     
    public static void main(String[] args) {
        MathSubjects A = new MathSubjects();
        Scanner input = new Scanner(System.in);
        System.out.print("Enter a number : ");
        int n = input.nextInt();
        System.out.print("số hoàn hảo nhỏ hơn hoặc bằng n: ");
        for(int i=1;i<=n;i++)
        {
            if(A.soHoanHao(i))
            {
                System.out.print("  "+i);
            }
        }
    }
}

Bài 3: Nhập vào một số nguyên dương n in ra n số hoàn hảo đầu tiên

Code mẫu:

import java.util.Scanner;
import java.lang.Math;
public class MathSubjects{
    public boolean soHoanHao(long n)
    {
        if(n<2) return false;
        long s=1;
        for(long i=2;i<Math.sqrt(n);i++)
        {
            if(n%i==0) s+=i+(n/i);
        }
        if(n==s) return true;
        else return false;
    }
     
    public static void main(String[] args) {
        MathSubjects A = new MathSubjects();
        Scanner input = new Scanner(System.in);
        System.out.print("Enter a number : ");
        long n = input.nextInt();
        System.out.print("n số hoàn hoàn đầu tiên: ");
        long dem=0, i=1;
        while(dem<n)
        {
            if(A.soHoanHao(i))
            {
                System.out.print("  "+i);
                dem++;
            }
            i++;
        }
    }
}